home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1992-09-06 | 20.5 KB | [ TEXT/CCL2]
open in: MacOS 8.1
extracted
|
Win98
extracted
|
DOS
extracted
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary ).
Confidence Program Detection Match Type Support
10%
dexvert
MacBinary (archive/macBinary)
fallback
Supported
1%
dexvert
Text File (text/txt)
fallback
Supported
100%
file
MacBinary II, inited, Sun Sep 6 08:59:40 1992, modified Sun Sep 6 08:59:40 1992, creator Common Lisp 2, type ASCII, 19996 bytes "when-strings.lisp" , at 0x4e9c 730 bytes resource
default (weak)
99%
file
data
default
74%
TrID
Macintosh plain text (MacBinary)
default
25%
TrID
MacBinary 2
default (weak)
100%
siegfried
fmt/1762 MacBinary (II)
default
100%
lsar
MacBinary
default
id metadata key value macFileType [ TEXT] macFileCreator [ CCL2]
hex view +--------+-------------------------+-------------------------+--------+--------+ |00000000| 00 11 77 68 65 6e 2d 73 | 74 72 69 6e 67 73 2e 6c |..when-s|trings.l| |00000010| 69 73 70 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |isp.....|........| |00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00000040| 00 54 45 58 54 43 43 4c | 32 01 00 00 00 00 00 00 |.TEXTCCL|2.......| |00000050| 00 00 00 00 00 4e 1c 00 | 00 02 da a6 cf b1 3c a6 |.....N..|......<.| |00000060| cf b1 3c 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |..<.....|........| |00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 b3 3b 00 00 |........|.....;..| |00000080| 3b 3b 3b 0d 3b 3b 3b 20 | 77 68 65 6e 2d 73 74 72 |;;;.;;; |when-str| |00000090| 69 6e 67 73 2e 6c 69 73 | 70 0d 3b 3b 3b 0d 0d 23 |ings.lis|p.;;;..#| |000000a0| 7c 0d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d ||.======|========| |000000b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000000c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000000d0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000000e0| 3d 3d 0d 50 75 72 70 6f | 73 65 20 3d 3d 3d 3d 3d |==.Purpo|se =====| |000000f0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000100| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000110| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000120| 3d 3d 3d 0d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |===.====|========| |00000130| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000140| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000150| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000160| 3d 3d 3d 3d 0d 44 65 66 | 69 6e 65 73 20 66 75 6e |====.Def|ines fun| |00000170| 63 74 69 6f 6e 73 20 66 | 6f 72 20 64 65 63 6f 64 |ctions f|or decod| |00000180| 69 6e 67 20 77 68 65 6e | 2d 73 74 72 69 6e 67 73 |ing when|-strings| |00000190| 2c 20 77 68 69 63 68 20 | 61 72 65 20 73 74 72 69 |, which |are stri| |000001a0| 6e 67 73 20 65 6e 63 6f | 64 69 6e 67 0d 70 6f 73 |ngs enco|ding.pos| |000001b0| 73 69 62 6c 79 20 72 65 | 70 65 61 74 69 6e 67 20 |sibly re|peating | |000001c0| 74 69 6d 65 73 20 61 6e | 64 20 64 61 74 65 73 2e |times an|d dates.| |000001d0| 0d 0d 46 69 65 6c 64 73 | 3a 0d 41 20 77 68 65 6e |..Fields|:.A when| |000001e0| 2d 73 74 72 69 6e 67 20 | 69 73 20 61 20 73 74 72 |-string |is a str| |000001f0| 69 6e 67 20 74 68 61 74 | 20 63 6f 6e 74 61 69 6e |ing that| contain| |00000200| 73 20 66 69 65 6c 64 73 | 20 66 6f 72 20 74 69 6d |s fields| for tim| |00000210| 65 73 2c 20 64 61 79 73 | 2c 20 6d 6f 6e 74 68 73 |es, days|, months| |00000220| 2c 0d 61 6e 64 20 79 65 | 61 72 73 2e 20 54 68 65 |,.and ye|ars. The| |00000230| 20 6f 6e 6c 79 20 76 61 | 6c 69 64 20 66 69 65 6c | only va|lid fiel| |00000240| 64 20 74 79 70 65 73 20 | 66 6f 6c 6c 6f 77 2e 0d |d types |follow..| |00000250| 0d 0d 46 69 65 6c 64 20 | 74 79 70 65 73 3a 0d 3a |..Field |types:.:| |00000260| 74 69 6d 65 20 2d 20 53 | 70 65 63 69 66 69 65 64 |time - S|pecified| |00000270| 20 69 6e 20 6d 69 6c 69 | 74 61 72 79 20 66 6f 72 | in mili|tary for| |00000280| 6d 61 74 2e 20 42 6f 74 | 68 20 74 68 65 20 68 6f |mat. Bot|h the ho| |00000290| 75 72 20 61 6e 64 20 6d | 69 6e 75 74 65 20 61 72 |ur and m|inute ar| |000002a0| 65 0d 72 65 71 75 69 72 | 65 64 20 69 6e 20 74 68 |e.requir|ed in th| |000002b0| 69 73 20 66 6f 72 6d 61 | 74 20 22 48 48 3a 4d 4d |is forma|t "HH:MM| |000002c0| 22 20 77 68 65 72 65 20 | 48 20 61 6e 64 20 4d 20 |" where |H and M | |000002d0| 61 72 65 20 64 65 63 69 | 6d 61 6c 20 6e 61 74 75 |are deci|mal natu| |000002e0| 72 61 6c 20 6e 75 6d 62 | 65 72 73 2e 0d 45 78 61 |ral numb|ers..Exa| |000002f0| 6d 70 6c 65 73 20 61 72 | 65 20 32 30 3a 33 30 20 |mples ar|e 20:30 | |00000300| 28 65 2e 67 2e 20 38 3a | 33 30 70 6d 29 20 61 6e |(e.g. 8:|30pm) an| |00000310| 64 20 30 32 3a 31 35 20 | 28 65 2e 67 2e 20 71 75 |d 02:15 |(e.g. qu| |00000320| 61 72 74 65 72 20 70 61 | 73 74 20 32 61 6d 29 2e |arter pa|st 2am).| |00000330| 20 54 68 65 0d 68 6f 75 | 72 20 69 73 20 62 65 74 | The.hou|r is bet| |00000340| 77 65 65 6e 20 30 30 20 | 61 6e 64 20 32 33 20 69 |ween 00 |and 23 i| |00000350| 6e 63 6c 75 73 69 76 65 | 20 61 6e 64 20 74 68 65 |nclusive| and the| |00000360| 20 6d 69 6e 75 74 65 20 | 69 73 20 62 65 74 77 65 | minute |is betwe| |00000370| 65 6e 20 30 30 20 61 6e | 64 20 35 39 0d 69 6e 63 |en 00 an|d 59.inc| |00000380| 6c 75 73 69 76 65 2e 0d | 0d 3a 64 61 79 2d 6f 66 |lusive..|.:day-of| |00000390| 2d 77 65 65 6b 20 2d 20 | 53 70 65 63 69 66 69 65 |-week - |Specifie| |000003a0| 64 20 61 73 20 6f 6e 65 | 20 6f 66 20 74 68 65 73 |d as one| of thes| |000003b0| 65 20 73 74 72 69 6e 67 | 73 20 6f 66 20 74 68 72 |e string|s of thr| |000003c0| 65 65 20 63 68 61 72 61 | 63 74 65 72 73 3a 20 4d |ee chara|cters: M| |000003d0| 6f 6e 2c 0d 54 75 65 2c | 20 57 65 64 2c 20 54 68 |on,.Tue,| Wed, Th| |000003e0| 75 2c 20 46 72 69 2c 20 | 53 61 74 2c 20 53 75 6e |u, Fri, |Sat, Sun| |000003f0| 2e 0d 0d 3a 64 61 74 65 | 2d 6e 75 6d 62 65 72 20 |...:date|-number | |00000400| 2d 20 53 70 65 63 69 66 | 69 65 64 20 61 73 20 61 |- Specif|ied as a| |00000410| 20 73 74 72 69 6e 67 20 | 6f 66 20 74 77 6f 20 6e | string |of two n| |00000420| 61 74 75 72 61 6c 20 6e | 75 6d 62 65 72 73 20 62 |atural n|umbers b| |00000430| 65 74 77 65 65 6e 20 31 | 20 61 6e 64 0d 33 31 20 |etween 1| and.31 | |00000440| 69 6e 63 6c 75 73 69 76 | 65 2e 0d 0d 3a 6d 6f 6e |inclusiv|e...:mon| |00000450| 74 68 20 2d 20 53 70 65 | 63 69 66 69 65 64 20 61 |th - Spe|cified a| |00000460| 73 20 6f 6e 65 20 6f 66 | 20 74 68 65 73 65 20 73 |s one of| these s| |00000470| 74 72 69 6e 67 73 20 6f | 66 20 74 68 72 65 65 20 |trings o|f three | |00000480| 63 68 61 72 61 63 74 65 | 72 73 3a 20 4a 61 6e 2c |characte|rs: Jan,| |00000490| 20 46 65 62 2c 0d 4d 61 | 72 2c 20 41 70 72 2c 20 | Feb,.Ma|r, Apr, | |000004a0| 4d 61 79 2c 20 4a 75 6e | 2c 20 4a 75 6c 2c 20 41 |May, Jun|, Jul, A| |000004b0| 75 67 2c 20 53 65 70 2c | 20 4f 63 74 2c 20 4e 6f |ug, Sep,| Oct, No| |000004c0| 76 2c 20 44 65 63 2e 0d | 0d 3a 79 65 61 72 20 2d |v, Dec..|.:year -| |000004d0| 20 53 70 65 63 69 66 69 | 65 64 20 61 73 20 66 6f | Specifi|ed as fo| |000004e0| 75 72 20 6e 61 74 75 72 | 61 6c 20 6e 75 6d 62 65 |ur natur|al numbe| |000004f0| 72 73 2e 20 45 78 61 6d | 70 6c 65 73 20 61 72 65 |rs. Exam|ples are| |00000500| 20 31 39 39 32 20 61 6e | 64 20 31 38 30 34 2e 0d | 1992 an|d 1804..| |00000510| 0d 0d 43 6f 6e 73 74 72 | 61 69 6e 74 73 3a 0d 46 |..Constr|aints:.F| |00000520| 69 65 6c 64 73 20 61 72 | 65 20 64 65 6c 69 6d 69 |ields ar|e delimi| |00000530| 74 65 64 20 28 73 65 70 | 61 72 61 74 65 64 29 20 |ted (sep|arated) | |00000540| 62 79 20 23 5c 2d 20 28 | 61 20 64 61 73 68 29 2e |by #\- (|a dash).| |00000550| 0d 43 61 73 65 20 69 73 | 20 69 67 6e 6f 72 65 64 |.Case is| ignored| |00000560| 2e 0d 54 68 65 72 65 20 | 6d 75 73 74 20 62 65 20 |..There |must be | |00000570| 65 78 61 63 74 6c 79 20 | 7a 65 72 6f 20 6f 72 20 |exactly |zero or | |00000580| 6f 6e 65 20 6f 66 20 65 | 61 63 68 20 74 79 70 65 |one of e|ach type| |00000590| 20 6f 66 20 66 69 65 6c | 64 2e 0d 4d 75 73 74 20 | of fiel|d..Must | |000005a0| 73 70 65 63 69 66 79 20 | 61 20 3a 6d 6f 6e 74 68 |specify |a :month| |000005b0| 20 77 69 74 68 20 61 20 | 3a 64 61 74 65 2d 6e 75 | with a |:date-nu| |000005c0| 6d 62 65 72 2e 0d 0d 0d | 3d 3d 3d 3d 3d 3d 3d 3d |mber....|========| |000005d0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000005e0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000005f0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000600| 3d 3d 3d 3d 3d 3d 3d 3d | 0d 53 74 61 74 75 73 20 |========|.Status | |00000610| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000620| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000630| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000640| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 0d 3d 3d 3d 3d 3d 3d |========|=.======| |00000650| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000660| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000670| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000680| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 0d 49 6d 70 6c 65 |========|==.Imple| |00000690| 6d 65 6e 74 65 64 2e 0d | 0d 42 75 67 2f 46 69 78 |mented..|.Bug/Fix| |000006a0| 3a 20 53 68 6f 75 6c 64 | 20 62 65 20 61 62 6c 65 |: Should| be able| |000006b0| 20 74 6f 20 73 70 65 63 | 69 66 79 20 6a 75 73 74 | to spec|ify just| |000006c0| 20 61 20 64 61 74 65 20 | 77 69 74 68 6f 75 74 20 | a date |without | |000006d0| 61 20 6d 6f 6e 74 68 20 | 6f 72 20 79 65 61 72 2c |a month |or year,| |000006e0| 0d 65 2e 67 2e 20 30 31 | 2c 20 77 68 69 63 68 20 |.e.g. 01|, which | |000006f0| 77 6f 75 6c 64 20 6d 61 | 74 63 68 20 74 68 65 20 |would ma|tch the | |00000700| 66 69 72 73 74 20 6f 66 | 20 65 76 65 72 79 20 6d |first of| every m| |00000710| 6f 6e 74 68 20 6f 66 20 | 65 76 65 72 79 20 79 65 |onth of |every ye| |00000720| 61 72 2e 0d 0d 0d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |ar....==|========| |00000730| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000740| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000750| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000760| 3d 3d 3d 3d 3d 3d 0d 43 | 68 61 6e 67 65 20 68 69 |======.C|hange hi| |00000770| 73 74 6f 72 79 20 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |story ==|========| |00000780| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000790| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000007a0| 3d 3d 3d 3d 3d 3d 3d 0d | 3d 3d 3d 3d 3d 3d 3d 3d |=======.|========| |000007b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000007c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000007d0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000007e0| 3d 3d 3d 3d 3d 3d 3d 3d | 0d 31 34 2d 41 75 67 2d |========|.14-Aug-| |000007f0| 39 32 20 6d 63 09 43 72 | 65 61 74 65 64 2e 0d 31 |92 mc.Cr|eated..1| |00000800| 37 2d 41 75 67 2d 39 32 | 20 6d 63 09 55 70 64 61 |7-Aug-92| mc.Upda| |00000810| 74 65 64 20 66 6f 72 20 | 6e 65 77 20 6f 70 65 72 |ted for |new oper| |00000820| 61 74 69 6f 6e 73 2e 0d | 09 09 44 65 63 69 64 65 |ations..|..Decide| |00000830| 64 20 74 6f 20 6e 6f 74 | 20 68 61 6e 64 6c 65 20 |d to not| handle | |00000840| 3a 72 65 6c 61 74 69 76 | 65 2d 64 61 79 2d 73 70 |:relativ|e-day-sp| |00000850| 65 63 69 66 69 65 72 20 | 2e 0d 31 38 2d 41 75 67 |ecifier |..18-Aug| |00000860| 2d 39 32 20 6d 63 09 44 | 65 66 69 6e 65 64 20 66 |-92 mc.D|efined f| |00000870| 2d 77 68 65 6e 2d 73 74 | 72 2d 6d 61 74 63 68 65 |-when-st|r-matche| |00000880| 73 2d 6d 6f 6e 74 68 20 | 2e 0d 09 09 46 69 78 65 |s-month |....Fixe| |00000890| 64 20 62 75 67 20 69 6e | 20 66 69 65 6c 64 2d 73 |d bug in| field-s| |000008a0| 70 65 63 2d 66 72 6f 6d | 2d 73 74 72 2d 66 69 65 |pec-from|-str-fie| |000008b0| 6c 64 20 77 68 65 6e 20 | 63 68 65 63 6b 69 6e 67 |ld when |checking| |000008c0| 20 66 6f 72 20 3a 74 69 | 6d 65 20 2e 0d 31 39 2d | for :ti|me ..19-| |000008d0| 41 75 67 2d 39 32 20 6d | 63 09 4e 6f 74 65 64 20 |Aug-92 m|c.Noted | |000008e0| 42 75 67 2f 46 69 78 20 | 61 62 6f 76 65 20 2e 0d |Bug/Fix |above ..| |000008f0| 30 36 2d 53 65 70 2d 39 | 32 20 6d 63 09 43 68 61 |06-Sep-9|2 mc.Cha| |00000900| 6e 67 65 64 20 77 68 65 | 6e 2d 73 74 72 69 6e 67 |nged whe|n-string| |00000910| 2d 6e 6f 77 20 74 6f 20 | 75 73 65 20 66 2d 69 6e |-now to |use f-in| |00000920| 63 6c 75 64 65 2d 68 6f | 75 72 2d 61 6e 64 2d 6d |clude-ho|ur-and-m| |00000930| 69 6e 75 74 65 20 2e 0d | 0d 7c 23 0d 0d 0d 28 69 |inute ..|.|#...(i| |00000940| 6e 2d 70 61 63 6b 61 67 | 65 20 22 43 4f 4d 4d 4f |n-packag|e "COMMO| |00000950| 4e 2d 4c 49 53 50 2d 55 | 53 45 52 22 29 0d 0d 0d |N-LISP-U|SER")...| |00000960| 28 65 78 70 6f 72 74 20 | 27 28 46 2d 56 41 4c 49 |(export |'(F-VALI| |00000970| 44 2d 57 48 45 4e 2d 53 | 54 52 0d 20 20 20 20 20 |D-WHEN-S|TR. | |00000980| 20 20 20 20 20 46 2d 57 | 48 45 4e 2d 53 54 52 2d | F-W|HEN-STR-| |00000990| 4d 41 54 43 48 45 53 2d | 44 41 54 45 0d 20 20 20 |MATCHES-|DATE. | |000009a0| 20 20 20 20 20 20 20 46 | 2d 57 48 45 4e 2d 53 54 | F|-WHEN-ST| |000009b0| 52 2d 4d 41 54 43 48 45 | 53 2d 4d 4f 4e 54 48 0d |R-MATCHE|S-MONTH.| |000009c0| 20 20 20 20 20 20 20 20 | 20 20 44 45 43 4f 44 45 | | DECODE| |000009d0| 2d 57 48 45 4e 2d 53 54 | 52 0d 20 20 20 20 20 20 |-WHEN-ST|R. | |000009e0| 20 20 20 20 57 48 45 4e | 2d 53 54 52 49 4e 47 2d | WHEN|-STRING-| |000009f0| 4d 41 4b 45 0d 20 20 20 | 20 20 20 20 20 20 20 57 |MAKE. | W| |00000a00| 48 45 4e 2d 53 54 52 49 | 4e 47 2d 4e 4f 57 29 0d |HEN-STRI|NG-NOW).| |00000a10| 20 20 20 20 20 20 20 20 | 22 43 4f 4d 4d 4f 4e 2d | |"COMMON-| |00000a20| 4c 49 53 50 2d 55 53 45 | 52 22 29 0d 0d 0d 3b 3b |LISP-USE|R")...;;| |00000a30| 3b 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |;=======|========| |00000a40| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000a50| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000a60| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000a70| 3d 0d 3b 3b 3b 20 44 65 | 66 69 6e 65 20 77 68 65 |=.;;; De|fine whe| |00000a80| 6e 2d 73 74 72 69 6e 67 | 20 6f 70 65 72 61 74 69 |n-string| operati| |00000a90| 6f 6e 73 2e 0d 3b 3b 3b | 3d 3d 3d 3d 3d 3d 3d 3d |ons..;;;|========| |00000aa0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000ab0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000ac0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00000ad0| 3d 3d 3d 3d 3d 3d 3d 3d | 0d 0d 28 64 65 66 67 65 |========|..(defge| |00000ae0| 6e 65 72 69 63 20 66 2d | 76 61 6c 69 64 2d 77 68 |neric f-|valid-wh| |00000af0| 65 6e 2d 73 74 72 20 28 | 77 68 65 6e 2d 73 74 72 |en-str (|when-str| |00000b00| 69 6e 67 29 0d 20 20 28 | 3a 64 6f 63 75 6d 65 6e |ing). (|:documen| |00000b10| 74 61 74 69 6f 6e 20 22 | 52 65 74 75 72 6e 73 20 |tation "|Returns | |00000b20| 6e 6f 6e 2d 6e 69 6c 20 | 69 66 20 77 68 65 6e 2d |non-nil |if when-| |00000b30| 73 74 72 69 6e 67 20 73 | 70 65 63 69 66 69 65 73 |string s|pecifies| |00000b40| 20 61 20 76 61 6c 69 64 | 0d 77 68 65 6e 2d 73 74 | a valid|.when-st| |00000b50| 72 69 6e 67 2e 22 29 29 | 0d 0d 0d 28 64 65 66 6d |ring."))|...(defm| |00000b60| 65 74 68 6f 64 20 66 2d | 76 61 6c 69 64 2d 77 68 |ethod f-|valid-wh| |00000b70| 65 6e 2d 73 74 72 20 28 | 28 77 68 65 6e 2d 73 74 |en-str (|(when-st| |00000b80| 72 69 6e 67 20 73 74 72 | 69 6e 67 29 29 0d 20 20 |ring str|ing)). | |00000b90| 28 64 65 63 6c 61 72 65 | 20 28 6f 70 74 69 6d 69 |(declare| (optimi| |00000ba0| 7a 65 20 73 70 65 65 64 | 29 29 0d 20 20 3b 3b 0d |ze speed|)). ;;.| |00000bb0| 20 20 28 6c 2d 66 69 65 | 6c 64 2d 73 70 65 63 73 | (l-fie|ld-specs| |00000bc0| 2d 66 72 6f 6d 2d 77 68 | 65 6e 2d 73 74 72 20 77 |-from-wh|en-str w| |00000bd0| 68 65 6e 2d 73 74 72 69 | 6e 67 29 29 0d 0d 0d 28 |hen-stri|ng))...(| |00000be0| 64 65 66 67 65 6e 65 72 | 69 63 20 66 2d 77 68 65 |defgener|ic f-whe| |00000bf0| 6e 2d 73 74 72 2d 6d 61 | 74 63 68 65 73 2d 64 61 |n-str-ma|tches-da| |00000c00| 74 65 20 28 77 68 65 6e | 2d 73 74 72 69 6e 67 0d |te (when|-string.| |00000c10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00000c20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00000c30| 20 20 20 20 20 20 69 6e | 74 2d 64 61 74 65 2d 6e | in|t-date-n| |00000c40| 75 6d 62 65 72 20 69 6e | 74 2d 6d 6f 6e 74 68 2d |umber in|t-month-| |00000c50| 6e 75 6d 62 65 72 20 69 | 6e 74 2d 79 65 61 72 29 |number i|nt-year)| |00000c60| 0d 20 20 28 3a 64 6f 63 | 75 6d 65 6e 74 61 74 69 |. (:doc|umentati| |00000c70| 6f 6e 20 22 52 65 74 75 | 72 6e 73 20 6e 6f 6e 2d |on "Retu|rns non-| |00000c80| 6e 69 6c 20 69 66 20 77 | 68 65 6e 2d 73 74 72 69 |nil if w|hen-stri| |00000c90| 6e 67 20 6d 61 74 63 68 | 65 73 20 69 6e 74 2d 64 |ng match|es int-d| |00000ca0| 61 74 65 2d 6e 75 6d 62 | 65 72 2c 0d 69 6e 74 2d |ate-numb|er,.int-| |00000cb0| 6d 6f 6e 74 68 2d 6e 75 | 6d 62 65 72 2c 20 61 6e |month-nu|mber, an| |00000cc0| 64 20 69 6e 74 2d 79 65 | 61 72 2e 22 29 29 0d 0d |d int-ye|ar."))..| |00000cd0| 0d 28 64 65 66 6d 65 74 | 68 6f 64 20 66 2d 77 68 |.(defmet|hod f-wh| |00000ce0| 65 6e 2d 73 74 72 2d 6d | 61 74 63 68 65 73 2d 64 |en-str-m|atches-d| |00000cf0| 61 74 65 20 28 28 77 68 | 65 6e 2d 73 74 72 69 6e |ate ((wh|en-strin| |00000d00| 67 20 73 74 72 69 6e 67 | 29 0d 20 20 20 20 20 20 |g string|). | |00000d10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00000d20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 28 | | (| |00000d30| 69 6e 74 2d 64 61 74 65 | 2d 6e 75 6d 62 65 72 20 |int-date|-number | |00000d40| 69 6e 74 65 67 65 72 29 | 0d 20 20 20 20 20 20 20 |integer)|. | |00000d50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00000d60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 28 69 | | (i| |00000d70| 6e 74 2d 6d 6f 6e 74 68 | 2d 6e 75 6d 62 65 72 20 |nt-month|-number | |00000d80| 69 6e 74 65 67 65 72 29 | 0d 20 20 20 20 20 20 20 |integer)|. | |00000d90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00000da0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 28 69 | | (i| |00000db0| 6e 74 2d 79 65 61 72 20 | 69 6e 74 65 67 65 72 29 |nt-year |integer)| |00000dc0| 29 0d 20 20 28 64 65 63 | 6c 61 72 65 20 28 6f 70 |). (dec|lare (op| |00000dd0| 74 69 6d 69 7a 65 20 73 | 70 65 65 64 29 29 0d 20 |timize s|peed)). | |00000de0| 20 3b 3b 0d 20 20 28 6c | 65 74 2a 20 28 28 6c 2d | ;;. (l|et* ((l-| |00000df0| 66 69 65 6c 64 2d 73 70 | 65 63 73 20 28 6c 2d 66 |field-sp|ecs (l-f| |00000e00| 69 65 6c 64 2d 73 70 65 | 63 73 2d 66 72 6f 6d 2d |ield-spe|cs-from-| |00000e10| 77 68 65 6e 2d 73 74 72 | 20 77 68 65 6e 2d 73 74 |when-str| when-st| |00000e20| 72 69 6e 67 29 29 0d 20 | 20 20 20 20 20 20 20 20 |ring)). | | |00000e30| 28 66 2d 76 61 6c 69 64 | 2d 77 68 65 6e 2d 73 74 |(f-valid|-when-st| |00000e40| 72 20 6c 2d 66 69 65 6c | 64 2d 73 70 65 63 73 29 |r l-fiel|d-specs)| |00000e50| 0d 20 20 20 20 20 20 20 | 20 20 28 66 2d 77 68 65 |. | (f-whe| |00000e60| 6e 2d 73 74 72 2d 6d 61 | 74 63 68 65 73 20 74 29 |n-str-ma|tches t)| |00000e70| 0d 20 20 20 20 20 20 20 | 20 20 69 6e 74 2d 64 61 |. | int-da| |00000e80| 79 2d 6f 66 2d 77 65 65 | 6b 29 0d 20 20 20 20 3b |y-of-wee|k). ;| |00000e90| 3b 0d 20 20 20 20 28 75 | 6e 6c 65 73 73 20 66 2d |;. (u|nless f-| |00000ea0| 76 61 6c 69 64 2d 77 68 | 65 6e 2d 73 74 72 0d 20 |valid-wh|en-str. | |00000eb0| 20 20 20 20 20 28 65 72 | 72 6f 72 20 22 7e 53 20 | (er|ror "~S | |00000ec0| 69 73 20 6e 6f 74 20 61 | 20 76 61 6c 69 64 20 77 |is not a| valid w| |00000ed0| 68 65 6e 2d 73 74 72 69 | 6e 67 2e 22 20 77 68 65 |hen-stri|ng." whe| |00000ee0| 6e 2d 73 74 72 69 6e 67 | 29 29 0d 20 20 20 20 3b |n-string|)). ;| |00000ef0| 3b 20 53 65 74 20 69 6e | 74 2d 64 61 79 2d 6f 66 |; Set in|t-day-of| |00000f00| 2d 77 65 65 6b 20 2e 0d | 20 20 20 20 28 6c 65 74 |-week ..| (let| |00000f10| 20 28 28 75 74 20 28 65 | 6e 63 6f 64 65 2d 75 6e | ((ut (e|ncode-un| |00000f20| 69 76 65 72 73 61 6c 2d | 74 69 6d 65 20 30 20 30 |iversal-|time 0 0| |00000f30| 20 30 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | 0. | | |00000f40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00000f50| 20 20 20 20 20 20 20 20 | 69 6e 74 2d 64 61 74 65 | |int-date| |00000f60| 2d 6e 75 6d 62 65 72 20 | 69 6e 74 2d 6d 6f 6e 74 |-number |int-mont| |00000f70| 68 2d 6e 75 6d 62 65 72 | 20 69 6e 74 2d 79 65 61 |h-number| int-yea| |00000f80| 72 29 29 29 0d 20 20 20 | 20 20 20 28 6d 75 6c 74 |r))). | (mult| |00000f90| 69 70 6c 65 2d 76 61 6c | 75 65 2d 62 69 6e 64 20 |iple-val|ue-bind | |00000fa0| 28 73 65 63 6f 6e 64 20 | 6d 69 6e 75 74 65 20 68 |(second |minute h| |00000fb0| 6f 75 72 20 64 61 74 65 | 20 6d 6f 6e 74 68 20 79 |our date| month y| |00000fc0| 65 61 72 20 64 61 79 2d | 6f 66 2d 77 65 65 6b 29 |ear day-|of-week)| |00000fd0| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00000fe0| 20 20 20 20 20 20 20 20 | 20 20 20 20 28 64 65 63 | | (dec| |00000ff0| 6f 64 65 2d 75 6e 69 76 | 65 72 73 61 6c 2d 74 69 |ode-univ|ersal-ti| |00001000| 6d 65 20 75 74 29 0d 20 | 20 20 20 20 20 20 20 28 |me ut). | (| |00001010| 64 65 63 6c 61 72 65 20 | 28 69 67 6e 6f 72 65 20 |declare |(ignore | |00001020| 73 65 63 6f 6e 64 20 6d | 69 6e 75 74 65 20 68 6f |second m|inute ho| |00001030| 75 72 20 64 61 74 65 20 | 6d 6f 6e 74 68 20 79 65 |ur date |month ye| |00001040| 61 72 29 29 0d 20 20 20 | 20 20 20 20 20 3b 3b 0d |ar)). | ;;.| |00001050| 20 20 20 20 20 20 20 20 | 28 73 65 74 66 20 69 6e | |(setf in| |00001060| 74 2d 64 61 79 2d 6f 66 | 2d 77 65 65 6b 20 64 61 |t-day-of|-week da| |00001070| 79 2d 6f 66 2d 77 65 65 | 6b 29 29 29 0d 20 20 20 |y-of-wee|k))). | |00001080| 20 3b 3b 0d 20 20 20 20 | 3b 3b 20 4d 61 74 63 68 | ;;. |;; Match| |00001090| 65 73 20 69 66 20 65 76 | 65 72 79 20 66 69 65 6c |es if ev|ery fiel| |000010a0| 64 20 69 6e 20 6c 2d 66 | 69 65 6c 64 2d 73 70 65 |d in l-f|ield-spe| |000010b0| 63 73 20 6d 61 74 63 68 | 65 73 20 74 68 65 20 70 |cs match|es the p| |000010c0| 61 73 73 65 64 20 76 61 | 6c 75 65 73 0d 20 20 20 |assed va|lues. | |000010d0| 20 3b 3b 0d 20 20 20 20 | 28 64 6f 6c 69 73 74 20 | ;;. |(dolist | |000010e0| 28 66 69 65 6c 64 2d 73 | 70 65 63 20 6c 2d 66 69 |(field-s|pec l-fi| |000010f0| 65 6c 64 2d 73 70 65 63 | 73 29 0d 20 20 20 20 20 |eld-spec|s). | |00001100| 20 28 6c 65 74 20 28 28 | 6b 77 2d 66 69 65 6c 64 | (let ((|kw-field| |00001110| 2d 74 79 70 65 20 28 66 | 69 72 73 74 20 66 69 65 |-type (f|irst fie| |00001120| 6c 64 2d 73 70 65 63 29 | 29 0d 20 20 20 20 20 20 |ld-spec)|). | |00001130| 20 20 20 20 20 20 28 66 | 69 65 6c 64 2d 76 61 6c | (f|ield-val| |00001140| 75 65 20 28 73 65 63 6f | 6e 64 20 66 69 65 6c 64 |ue (seco|nd field| |00001150| 2d 73 70 65 63 29 29 29 | 0d 20 20 20 20 20 20 20 |-spec)))|. | |00001160| 20 28 77 68 65 6e 20 28 | 61 6e 64 20 28 6d 65 6d | (when (|and (mem| |00001170| 62 65 72 20 6b 77 2d 66 | 69 65 6c 64 2d 74 79 70 |ber kw-f|ield-typ| |00001180| 65 0d 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |e. | | |00001190| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 27 28 3a | | '(:| |000011a0| 64 61 74 65 2d 6e 75 6d | 62 65 72 20 3a 6d 6f 6e |date-num|ber :mon| |000011b0| 74 68 20 3a 79 65 61 72 | 20 3a 64 61 79 2d 6f 66 |th :year| :day-of| |000011c0| 2d 77 65 65 6b 29 29 0d | 20 20 20 20 20 20 20 20 |-week)).| | |000011d0| 20 20 20 20 20 20 20 20 | 20 20 20 28 6e 6f 74 20 | | (not | |000011e0| 28 66 2d 66 69 65 6c 64 | 2d 73 70 65 63 2d 6d 61 |(f-field|-spec-ma| |000011f0| 74 63 68 65 73 2d 76 61 | 6c 75 65 0d 20 20 20 20 |tches-va|lue. | |00001200| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001210| 20 20 20 20 20 20 20 6b | 77 2d 66 69 65 6c 64 2d | k|w-field-| |00001220| 74 79 70 65 20 66 69 65 | 6c 64 2d 76 61 6c 75 65 |type fie|ld-value| |00001230| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00001240| 20 20 20 20 20 20 20 20 | 20 20 20 20 69 6e 74 2d | | int-| |00001250| 64 61 79 2d 6f 66 2d 77 | 65 65 6b 20 69 6e 74 2d |day-of-w|eek int-| |00001260| 64 61 74 65 2d 6e 75 6d | 62 65 72 20 69 6e 74 2d |date-num|ber int-| |00001270| 6d 6f 6e 74 68 2d 6e 75 | 6d 62 65 72 20 69 6e 74 |month-nu|mber int| |00001280| 2d 79 65 61 72 29 29 29 | 0d 20 20 20 20 20 20 20 |-year)))|. | |00001290| 20 20 20 28 73 65 74 66 | 20 66 2d 77 68 65 6e 2d | (setf| f-when-| |000012a0| 73 74 72 2d 6d 61 74 63 | 68 65 73 20 6e 69 6c 29 |str-matc|hes nil)| |000012b0| 29 29 29 0d 20 20 20 20 | 66 2d 77 68 65 6e 2d 73 |))). |f-when-s| |000012c0| 74 72 2d 6d 61 74 63 68 | 65 73 29 29 0d 0d 0d 28 |tr-match|es))...(| |000012d0| 64 65 66 67 65 6e 65 72 | 69 63 20 66 2d 77 68 65 |defgener|ic f-whe| |000012e0| 6e 2d 73 74 72 2d 6d 61 | 74 63 68 65 73 2d 6d 6f |n-str-ma|tches-mo| |000012f0| 6e 74 68 20 28 77 68 65 | 6e 2d 73 74 72 69 6e 67 |nth (whe|n-string| |00001300| 20 69 6e 74 2d 6d 6f 6e | 74 68 2d 6e 75 6d 62 65 | int-mon|th-numbe| |00001310| 72 20 69 6e 74 2d 79 65 | 61 72 29 0d 20 20 28 3a |r int-ye|ar). (:| |00001320| 64 6f 63 75 6d 65 6e 74 | 61 74 69 6f 6e 20 22 52 |document|ation "R| |00001330| 65 74 75 72 6e 73 20 6e | 6f 6e 2d 6e 69 6c 20 69 |eturns n|on-nil i| |00001340| 66 20 77 68 65 6e 2d 73 | 74 72 69 6e 67 20 6d 61 |f when-s|tring ma| |00001350| 74 63 68 65 73 20 69 6e | 74 2d 6d 6f 6e 74 68 2d |tches in|t-month-| |00001360| 6e 75 6d 62 65 72 0d 61 | 6e 64 20 69 6e 74 2d 79 |number.a|nd int-y| |00001370| 65 61 72 2e 22 29 29 0d | 0d 0d 28 64 65 66 6d 65 |ear.")).|..(defme| |00001380| 74 68 6f 64 20 66 2d 77 | 68 65 6e 2d 73 74 72 2d |thod f-w|hen-str-| |00001390| 6d 61 74 63 68 65 73 2d | 6d 6f 6e 74 68 20 28 28 |matches-|month ((| |000013a0| 77 68 65 6e 2d 73 74 72 | 69 6e 67 20 73 74 72 69 |when-str|ing stri| |000013b0| 6e 67 29 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |ng). | | |000013c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000013d0| 20 20 20 20 20 20 20 20 | 20 28 69 6e 74 2d 6d 6f | | (int-mo| |000013e0| 6e 74 68 2d 6e 75 6d 62 | 65 72 20 69 6e 74 65 67 |nth-numb|er integ| |000013f0| 65 72 29 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |er). | | |00001400| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001410| 20 20 20 20 20 20 20 20 | 20 28 69 6e 74 2d 79 65 | | (int-ye| |00001420| 61 72 20 69 6e 74 65 67 | 65 72 29 29 0d 20 20 28 |ar integ|er)). (| |00001430| 64 65 63 6c 61 72 65 20 | 28 6f 70 74 69 6d 69 7a |declare |(optimiz| |00001440| 65 20 73 70 65 65 64 29 | 29 0d 20 20 3b 3b 0d 20 |e speed)|). ;;. | |00001450| 20 28 6c 65 74 2a 20 28 | 28 6c 2d 66 69 65 6c 64 | (let* (|(l-field| |00001460| 2d 73 70 65 63 73 20 28 | 6c 2d 66 69 65 6c 64 2d |-specs (|l-field-| |00001470| 73 70 65 63 73 2d 66 72 | 6f 6d 2d 77 68 65 6e 2d |specs-fr|om-when-| |00001480| 73 74 72 20 77 68 65 6e | 2d 73 74 72 69 6e 67 29 |str when|-string)| |00001490| 29 0d 20 20 20 20 20 20 | 20 20 20 28 66 2d 76 61 |). | (f-va| |000014a0| 6c 69 64 2d 77 68 65 6e | 2d 73 74 72 20 6c 2d 66 |lid-when|-str l-f| |000014b0| 69 65 6c 64 2d 73 70 65 | 63 73 29 0d 20 20 20 20 |ield-spe|cs). | |000014c0| 20 20 20 20 20 28 66 2d | 77 68 65 6e 2d 73 74 72 | (f-|when-str| |000014d0| 2d 6d 61 74 63 68 65 73 | 20 74 29 29 0d 20 20 20 |-matches| t)). | |000014e0| 20 3b 3b 0d 20 20 20 20 | 28 75 6e 6c 65 73 73 20 | ;;. |(unless | |000014f0| 66 2d 76 61 6c 69 64 2d | 77 68 65 6e 2d 73 74 72 |f-valid-|when-str| |00001500| 0d 20 20 20 20 20 20 28 | 65 72 72 6f 72 20 22 7e |. (|error "~| |00001510| 53 20 69 73 20 6e 6f 74 | 20 61 20 76 61 6c 69 64 |S is not| a valid| |00001520| 20 77 68 65 6e 2d 73 74 | 72 69 6e 67 2e 22 20 77 | when-st|ring." w| |00001530| 68 65 6e 2d 73 74 72 69 | 6e 67 29 29 0d 20 20 20 |hen-stri|ng)). | |00001540| 20 3b 3b 0d 20 20 20 20 | 3b 3b 20 4d 61 74 63 68 | ;;. |;; Match| |00001550| 65 73 20 69 66 20 65 76 | 65 72 79 20 66 69 65 6c |es if ev|ery fiel| |00001560| 64 20 69 6e 20 6c 2d 66 | 69 65 6c 64 2d 73 70 65 |d in l-f|ield-spe| |00001570| 63 73 20 6d 61 74 63 68 | 65 73 20 74 68 65 20 70 |cs match|es the p| |00001580| 61 73 73 65 64 20 76 61 | 6c 75 65 73 0d 20 20 20 |assed va|lues. | |00001590| 20 3b 3b 0d 20 20 20 20 | 28 64 6f 6c 69 73 74 20 | ;;. |(dolist | |000015a0| 28 66 69 65 6c 64 2d 73 | 70 65 63 20 6c 2d 66 69 |(field-s|pec l-fi| |000015b0| 65 6c 64 2d 73 70 65 63 | 73 29 0d 20 20 20 20 20 |eld-spec|s). | |000015c0| 20 28 6c 65 74 20 28 28 | 6b 77 2d 66 69 65 6c 64 | (let ((|kw-field| |000015d0| 2d 74 79 70 65 20 28 66 | 69 72 73 74 20 66 69 65 |-type (f|irst fie| |000015e0| 6c 64 2d 73 70 65 63 29 | 29 0d 20 20 20 20 20 20 |ld-spec)|). | |000015f0| 20 20 20 20 20 20 28 66 | 69 65 6c 64 2d 76 61 6c | (f|ield-val| |00001600| 75 65 20 28 73 65 63 6f | 6e 64 20 66 69 65 6c 64 |ue (seco|nd field| |00001610| 2d 73 70 65 63 29 29 29 | 0d 20 20 20 20 20 20 20 |-spec)))|. | |00001620| 20 28 77 68 65 6e 20 28 | 61 6e 64 20 28 6d 65 6d | (when (|and (mem| |00001630| 62 65 72 20 6b 77 2d 66 | 69 65 6c 64 2d 74 79 70 |ber kw-f|ield-typ| |00001640| 65 20 27 28 3a 6d 6f 6e | 74 68 20 3a 79 65 61 72 |e '(:mon|th :year| |00001650| 29 29 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |)). | | |00001660| 20 20 20 20 20 20 28 6e | 6f 74 20 28 66 2d 66 69 | (n|ot (f-fi| |00001670| 65 6c 64 2d 73 70 65 63 | 2d 6d 61 74 63 68 65 73 |eld-spec|-matches| |00001680| 2d 76 61 6c 75 65 0d 20 | 20 20 20 20 20 20 20 20 |-value. | | |00001690| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000016a0| 20 20 6b 77 2d 66 69 65 | 6c 64 2d 74 79 70 65 20 | kw-fie|ld-type | |000016b0| 66 69 65 6c 64 2d 76 61 | 6c 75 65 0d 20 20 20 20 |field-va|lue. | |000016c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000016d0| 20 20 20 20 20 20 20 6e | 69 6c 20 6e 69 6c 20 69 | n|il nil i| |000016e0| 6e 74 2d 6d 6f 6e 74 68 | 2d 6e 75 6d 62 65 72 20 |nt-month|-number | |000016f0| 69 6e 74 2d 79 65 61 72 | 29 29 29 0d 20 20 20 20 |int-year|))). | |00001700| 20 20 20 20 20 20 28 73 | 65 74 66 20 66 2d 77 68 | (s|etf f-wh| |00001710| 65 6e 2d 73 74 72 2d 6d | 61 74 63 68 65 73 20 6e |en-str-m|atches n| |00001720| 69 6c 29 29 29 29 0d 20 | 20 20 20 66 2d 77 68 65 |il)))). | f-whe| |00001730| 6e 2d 73 74 72 2d 6d 61 | 74 63 68 65 73 29 29 0d |n-str-ma|tches)).| |00001740| 0d 0d 28 64 65 66 67 65 | 6e 65 72 69 63 20 64 65 |..(defge|neric de| |00001750| 63 6f 64 65 2d 77 68 65 | 6e 2d 73 74 72 20 28 77 |code-whe|n-str (w| |00001760| 68 65 6e 2d 73 74 72 69 | 6e 67 29 0d 20 20 28 3a |hen-stri|ng). (:| |00001770| 64 6f 63 75 6d 65 6e 74 | 61 74 69 6f 6e 20 22 52 |document|ation "R| |00001780| 65 74 75 72 6e 73 20 73 | 69 78 20 76 61 6c 75 65 |eturns s|ix value| |00001790| 73 20 66 72 6f 6d 20 77 | 68 65 6e 2d 73 74 72 69 |s from w|hen-stri| |000017a0| 6e 67 3a 20 69 6e 74 2d | 6d 69 6e 75 74 65 2c 0d |ng: int-|minute,.| |000017b0| 69 6e 74 2d 68 6f 75 72 | 2c 20 69 6e 74 2d 64 61 |int-hour|, int-da| |000017c0| 74 65 2d 6e 75 6d 62 65 | 72 2c 20 69 6e 74 2d 6d |te-numbe|r, int-m| |000017d0| 6f 6e 74 68 2d 6e 75 6d | 62 65 72 2c 20 69 6e 74 |onth-num|ber, int| |000017e0| 2d 79 65 61 72 2c 20 61 | 6e 64 0d 69 6e 74 2d 64 |-year, a|nd.int-d| |000017f0| 61 79 2d 6f 66 2d 77 65 | 65 6b 2e 20 41 6c 6c 20 |ay-of-we|ek. All | |00001800| 76 61 6c 75 65 73 20 61 | 72 65 20 61 73 20 64 65 |values a|re as de| |00001810| 63 6f 64 65 2d 75 6e 69 | 76 65 72 73 61 6c 2d 74 |code-uni|versal-t| |00001820| 69 6d 65 20 72 65 74 75 | 72 6e 73 2e 0d 52 65 74 |ime retu|rns..Ret| |00001830| 75 72 6e 73 20 6e 69 6c | 20 66 6f 72 20 61 6e 79 |urns nil| for any| |00001840| 20 76 61 6c 75 65 20 74 | 68 61 74 20 63 61 6e 27 | value t|hat can'| |00001850| 74 20 62 65 20 64 65 74 | 65 72 6d 69 6e 65 64 2e |t be det|ermined.| |00001860| 22 29 29 0d 0d 0d 28 64 | 65 66 6d 65 74 68 6f 64 |"))...(d|efmethod| |00001870| 20 64 65 63 6f 64 65 2d | 77 68 65 6e 2d 73 74 72 | decode-|when-str| |00001880| 20 28 28 77 68 65 6e 2d | 73 74 72 69 6e 67 20 73 | ((when-|string s| |00001890| 74 72 69 6e 67 29 29 0d | 20 20 28 64 65 63 6c 61 |tring)).| (decla| |000018a0| 72 65 20 28 6f 70 74 69 | 6d 69 7a 65 20 73 70 65 |re (opti|mize spe| |000018b0| 65 64 29 29 0d 20 20 3b | 3b 0d 20 20 28 6c 65 74 |ed)). ;|;. (let| |000018c0| 2a 20 28 28 6c 2d 66 69 | 65 6c 64 2d 73 70 65 63 |* ((l-fi|eld-spec| |000018d0| 73 20 28 6c 2d 66 69 65 | 6c 64 2d 73 70 65 63 73 |s (l-fie|ld-specs| |000018e0| 2d 66 72 6f 6d 2d 77 68 | 65 6e 2d 73 74 72 20 77 |-from-wh|en-str w| |000018f0| 68 65 6e 2d 73 74 72 69 | 6e 67 29 29 0d 20 20 20 |hen-stri|ng)). | |00001900| 20 20 20 20 20 20 28 66 | 2d 76 61 6c 69 64 2d 77 | (f|-valid-w| |00001910| 68 65 6e 2d 73 74 72 20 | 6c 2d 66 69 65 6c 64 2d |hen-str |l-field-| |00001920| 73 70 65 63 73 29 0d 20 | 20 20 20 20 20 20 20 20 |specs). | | |00001930| 28 69 6e 74 2d 6d 69 6e | 75 74 65 20 6e 69 6c 29 |(int-min|ute nil)| |00001940| 0d 20 20 20 20 20 20 20 | 20 20 28 69 6e 74 2d 68 |. | (int-h| |00001950| 6f 75 72 20 6e 69 6c 29 | 0d 20 20 20 20 20 20 20 |our nil)|. | |00001960| 20 20 28 69 6e 74 2d 64 | 61 74 65 2d 6e 75 6d 62 | (int-d|ate-numb| |00001970| 65 72 20 6e 69 6c 29 0d | 20 20 20 20 20 20 20 20 |er nil).| | |00001980| 20 28 69 6e 74 2d 6d 6f | 6e 74 68 2d 6e 75 6d 62 | (int-mo|nth-numb| |00001990| 65 72 20 6e 69 6c 29 0d | 20 20 20 20 20 20 20 20 |er nil).| | |000019a0| 20 28 69 6e 74 2d 79 65 | 61 72 20 6e 69 6c 29 0d | (int-ye|ar nil).| |000019b0| 20 20 20 20 20 20 20 20 | 20 28 69 6e 74 2d 64 61 | | (int-da| |000019c0| 79 2d 6f 66 2d 77 65 65 | 6b 20 6e 69 6c 29 29 0d |y-of-wee|k nil)).| |000019d0| 20 20 20 20 3b 3b 0d 20 | 20 20 20 28 75 6e 6c 65 | ;;. | (unle| |000019e0| 73 73 20 66 2d 76 61 6c | 69 64 2d 77 68 65 6e 2d |ss f-val|id-when-| |000019f0| 73 74 72 0d 20 20 20 20 | 20 20 28 65 72 72 6f 72 |str. | (error| |00001a00| 20 22 7e 53 20 69 73 20 | 6e 6f 74 20 61 20 76 61 | "~S is |not a va| |00001a10| 6c 69 64 20 77 68 65 6e | 2d 73 74 72 69 6e 67 2e |lid when|-string.| |00001a20| 22 20 77 68 65 6e 2d 73 | 74 72 69 6e 67 29 29 0d |" when-s|tring)).| |00001a30| 20 20 20 20 3b 3b 0d 20 | 20 20 20 3b 3b 20 53 65 | ;;. | ;; Se| |00001a40| 74 20 65 61 63 68 20 6f | 66 20 74 68 65 20 72 65 |t each o|f the re| |00001a50| 73 75 6c 74 20 76 61 72 | 73 20 69 66 20 69 74 73 |sult var|s if its| |00001a60| 20 6b 77 2d 66 69 65 6c | 64 2d 74 79 70 65 20 69 | kw-fiel|d-type i| |00001a70| 73 20 6f 6e 20 6c 2d 66 | 69 65 6c 64 2d 73 70 65 |s on l-f|ield-spe| |00001a80| 63 73 0d 20 20 20 20 3b | 3b 0d 20 20 20 20 28 64 |cs. ;|;. (d| |00001a90| 6f 6c 69 73 74 20 28 66 | 69 65 6c 64 2d 73 70 65 |olist (f|ield-spe| |00001aa0| 63 20 6c 2d 66 69 65 6c | 64 2d 73 70 65 63 73 29 |c l-fiel|d-specs)| |00001ab0| 0d 20 20 20 20 20 20 28 | 6c 65 74 20 28 28 6b 77 |. (|let ((kw| |00001ac0| 2d 66 69 65 6c 64 2d 74 | 79 70 65 20 28 66 69 72 |-field-t|ype (fir| |00001ad0| 73 74 20 66 69 65 6c 64 | 2d 73 70 65 63 29 29 0d |st field|-spec)).| |00001ae0| 20 20 20 20 20 20 20 20 | 20 20 20 20 28 66 69 65 | | (fie| |00001af0| 6c 64 2d 76 61 6c 75 65 | 20 28 73 65 63 6f 6e 64 |ld-value| (second| |00001b00| 20 66 69 65 6c 64 2d 73 | 70 65 63 29 29 29 0d 20 | field-s|pec))). | |00001b10| 20 20 20 20 20 20 20 28 | 63 61 73 65 20 6b 77 2d | (|case kw-| |00001b20| 66 69 65 6c 64 2d 74 79 | 70 65 0d 20 20 20 20 20 |field-ty|pe. | |00001b30| 20 20 20 20 20 28 3a 74 | 69 6d 65 20 28 73 65 74 | (:t|ime (set| |00001b40| 66 20 69 6e 74 2d 68 6f | 75 72 20 28 66 69 72 73 |f int-ho|ur (firs| |00001b50| 74 20 66 69 65 6c 64 2d | 76 61 6c 75 65 29 0d 20 |t field-|value). | |00001b60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001b70| 20 20 20 20 20 20 69 6e | 74 2d 6d 69 6e 75 74 65 | in|t-minute| |00001b80| 20 28 73 65 63 6f 6e 64 | 20 66 69 65 6c 64 2d 76 | (second| field-v| |00001b90| 61 6c 75 65 29 29 29 0d | 20 20 20 20 20 20 20 20 |alue))).| | |00001ba0| 20 20 28 3a 64 61 74 65 | 2d 6e 75 6d 62 65 72 20 | (:date|-number | |00001bb0| 28 73 65 74 66 20 69 6e | 74 2d 64 61 74 65 2d 6e |(setf in|t-date-n| |00001bc0| 75 6d 62 65 72 20 66 69 | 65 6c 64 2d 76 61 6c 75 |umber fi|eld-valu| |00001bd0| 65 29 29 0d 20 20 20 20 | 20 20 20 20 20 20 28 3a |e)). | (:| |00001be0| 64 61 79 2d 6f 66 2d 77 | 65 65 6b 20 28 73 65 74 |day-of-w|eek (set| |00001bf0| 66 20 69 6e 74 2d 64 61 | 79 2d 6f 66 2d 77 65 65 |f int-da|y-of-wee| |00001c00| 6b 20 66 69 65 6c 64 2d | 76 61 6c 75 65 29 29 0d |k field-|value)).| |00001c10| 20 20 20 20 20 20 20 20 | 20 20 28 3a 6d 6f 6e 74 | | (:mont| |00001c20| 68 20 28 73 65 74 66 20 | 69 6e 74 2d 6d 6f 6e 74 |h (setf |int-mont| |00001c30| 68 2d 6e 75 6d 62 65 72 | 20 66 69 65 6c 64 2d 76 |h-number| field-v| |00001c40| 61 6c 75 65 29 29 0d 20 | 20 20 20 20 20 20 20 20 |alue)). | | |00001c50| 20 28 3a 79 65 61 72 20 | 28 73 65 74 66 20 69 6e | (:year |(setf in| |00001c60| 74 2d 79 65 61 72 20 66 | 69 65 6c 64 2d 76 61 6c |t-year f|ield-val| |00001c70| 75 65 29 29 29 29 29 0d | 20 20 20 20 3b 3b 20 52 |ue))))).| ;; R| |00001c80| 65 74 75 72 6e 20 74 68 | 65 20 72 65 73 75 6c 74 |eturn th|e result| |00001c90| 73 2e 0d 20 20 20 20 28 | 76 61 6c 75 65 73 20 69 |s.. (|values i| |00001ca0| 6e 74 2d 6d 69 6e 75 74 | 65 20 69 6e 74 2d 68 6f |nt-minut|e int-ho| |00001cb0| 75 72 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 69 |ur. | i| |00001cc0| 6e 74 2d 64 61 74 65 2d | 6e 75 6d 62 65 72 20 69 |nt-date-|number i| |00001cd0| 6e 74 2d 6d 6f 6e 74 68 | 2d 6e 75 6d 62 65 72 20 |nt-month|-number | |00001ce0| 69 6e 74 2d 79 65 61 72 | 0d 20 20 20 20 20 20 20 |int-year|. | |00001cf0| 20 20 20 20 20 69 6e 74 | 2d 64 61 79 2d 6f 66 2d | int|-day-of-| |00001d00| 77 65 65 6b 29 29 29 0d | 0d 0d 28 64 65 66 67 65 |week))).|..(defge| |00001d10| 6e 65 72 69 63 20 77 68 | 65 6e 2d 73 74 72 69 6e |neric wh|en-strin| |00001d20| 67 2d 6d 61 6b 65 20 28 | 26 6b 65 79 20 69 6e 74 |g-make (|&key int| |00001d30| 2d 6d 69 6e 75 74 65 20 | 69 6e 74 2d 68 6f 75 72 |-minute |int-hour| |00001d40| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00001d50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001d60| 20 20 20 20 20 69 6e 74 | 2d 64 61 74 65 2d 6e 75 | int|-date-nu| |00001d70| 6d 62 65 72 20 69 6e 74 | 2d 6d 6f 6e 74 68 2d 6e |mber int|-month-n| |00001d80| 75 6d 62 65 72 20 69 6e | 74 2d 79 65 61 72 0d 20 |umber in|t-year. | |00001d90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001da0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001db0| 20 20 20 69 6e 74 2d 64 | 61 79 2d 6f 66 2d 77 65 | int-d|ay-of-we| |00001dc0| 65 6b 29 0d 20 20 28 3a | 64 6f 63 75 6d 65 6e 74 |ek). (:|document| |00001dd0| 61 74 69 6f 6e 20 22 52 | 65 74 75 72 6e 73 20 61 |ation "R|eturns a| |00001de0| 20 77 68 65 6e 20 73 74 | 72 69 6e 67 20 74 68 61 | when st|ring tha| |00001df0| 74 20 70 72 6f 70 65 72 | 6c 79 20 65 6e 63 6f 64 |t proper|ly encod| |00001e00| 65 73 20 74 68 65 20 6e | 6f 6e 2d 6e 69 6c 0d 70 |es the n|on-nil.p| |00001e10| 61 73 73 65 64 20 76 61 | 6c 75 65 73 2e 20 45 72 |assed va|lues. Er| |00001e20| 72 6f 72 73 20 69 66 20 | 69 74 20 63 61 6e 27 74 |rors if |it can't| |00001e30| 20 63 6f 6e 73 74 72 75 | 63 74 20 61 20 76 61 6c | constru|ct a val| |00001e40| 69 64 20 77 68 65 6e 2d | 73 74 72 69 6e 67 20 66 |id when-|string f| |00001e50| 72 6f 6d 20 74 68 65 0d | 61 72 67 75 6d 65 6e 74 |rom the.|argument| |00001e60| 73 2e 22 29 29 0d 0d 0d | 28 64 65 66 6d 65 74 68 |s."))...|(defmeth| |00001e70| 6f 64 20 77 68 65 6e 2d | 73 74 72 69 6e 67 2d 6d |od when-|string-m| |00001e80| 61 6b 65 20 28 26 6b 65 | 79 20 69 6e 74 2d 6d 69 |ake (&ke|y int-mi| |00001e90| 6e 75 74 65 20 69 6e 74 | 2d 68 6f 75 72 0d 20 20 |nute int|-hour. | |00001ea0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001eb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001ec0| 20 69 6e 74 2d 64 61 74 | 65 2d 6e 75 6d 62 65 72 | int-dat|e-number| |00001ed0| 20 69 6e 74 2d 6d 6f 6e | 74 68 2d 6e 75 6d 62 65 | int-mon|th-numbe| |00001ee0| 72 20 69 6e 74 2d 79 65 | 61 72 0d 20 20 20 20 20 |r int-ye|ar. | |00001ef0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001f00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 69 6e | | in| |00001f10| 74 2d 64 61 79 2d 6f 66 | 2d 77 65 65 6b 29 0d 20 |t-day-of|-week). | |00001f20| 20 28 64 65 63 6c 61 72 | 65 20 28 6f 70 74 69 6d | (declar|e (optim| |00001f30| 69 7a 65 20 73 70 65 65 | 64 29 29 0d 20 20 3b 3b |ize spee|d)). ;;| |00001f40| 0d 20 20 3b 3b 20 54 79 | 70 65 20 63 68 65 63 6b |. ;; Ty|pe check| |00001f50| 20 74 68 65 20 70 61 73 | 73 65 64 20 61 72 67 73 | the pas|sed args| |00001f60| 2e 0d 20 20 3b 3b 0d 20 | 20 28 77 68 65 6e 20 28 |.. ;;. | (when (| |00001f70| 6f 72 20 28 61 6e 64 20 | 69 6e 74 2d 6d 69 6e 75 |or (and |int-minu| |00001f80| 74 65 20 28 6e 6f 74 20 | 69 6e 74 2d 68 6f 75 72 |te (not |int-hour| |00001f90| 29 29 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 28 |)). | (| |00001fa0| 61 6e 64 20 28 6e 6f 74 | 20 69 6e 74 2d 6d 69 6e |and (not| int-min| |00001fb0| 75 74 65 29 20 69 6e 74 | 2d 68 6f 75 72 29 29 0d |ute) int|-hour)).| |00001fc0| 20 20 20 20 28 65 72 72 | 6f 72 20 22 4d 75 73 74 | (err|or "Must| |00001fd0| 20 73 75 70 70 6c 79 20 | 62 6f 74 68 20 69 6e 74 | supply |both int| |00001fe0| 2d 6d 69 6e 75 74 65 20 | 61 6e 64 20 69 6e 74 2d |-minute |and int-| |00001ff0| 68 6f 75 72 2c 20 6f 72 | 20 6e 65 69 74 68 65 72 |hour, or| neither| |00002000| 2e 22 29 29 0d 20 20 28 | 77 68 65 6e 20 28 61 6e |.")). (|when (an| |00002010| 64 20 69 6e 74 2d 64 61 | 74 65 2d 6e 75 6d 62 65 |d int-da|te-numbe| |00002020| 72 0d 20 20 20 20 20 20 | 20 20 20 20 20 20 20 28 |r. | (| |00002030| 6e 6f 74 20 28 74 79 70 | 65 70 20 69 6e 74 2d 64 |not (typ|ep int-d| |00002040| 61 74 65 2d 6e 75 6d 62 | 65 72 20 27 28 69 6e 74 |ate-numb|er '(int| |00002050| 65 67 65 72 20 31 20 33 | 31 29 29 29 29 0d 20 20 |eger 1 3|1)))). | |00002060| 20 20 28 65 72 72 6f 72 | 20 22 49 6e 74 2d 64 61 | (error| "Int-da| |00002070| 74 65 2d 6e 75 6d 62 65 | 72 20 7e 53 20 77 61 73 |te-numbe|r ~S was| |00002080| 20 6e 6f 74 20 61 6e 20 | 69 6e 74 65 67 65 72 20 | not an |integer | |00002090| 62 65 74 77 65 65 6e 20 | 31 20 61 6e 64 20 33 31 |between |1 and 31| |000020a0| 20 69 6e 63 6c 75 73 69 | 76 65 2e 22 0d 20 20 20 | inclusi|ve.". | |000020b0| 20 20 20 20 20 20 20 20 | 69 6e 74 2d 64 61 74 65 | |int-date| |000020c0| 2d 6e 75 6d 62 65 72 29 | 29 0d 20 20 28 77 68 65 |-number)|). (whe| |000020d0| 6e 20 28 61 6e 64 20 69 | 6e 74 2d 64 61 74 65 2d |n (and i|nt-date-| |000020e0| 6e 75 6d 62 65 72 0d 20 | 20 20 20 20 20 20 20 20 |number. | | |000020f0| 20 20 20 20 28 6e 6f 74 | 20 69 6e 74 2d 6d 6f 6e | (not| int-mon| |00002100| 74 68 2d 6e 75 6d 62 65 | 72 29 29 0d 20 20 20 20 |th-numbe|r)). | |00002110| 28 65 72 72 6f 72 20 22 | 4d 75 73 74 20 73 75 70 |(error "|Must sup| |00002120| 70 6c 79 20 69 6e 74 2d | 6d 6f 6e 74 68 2d 6e 75 |ply int-|month-nu| |00002130| 6d 62 65 72 20 77 68 65 | 6e 20 70 61 73 73 69 6e |mber whe|n passin| |00002140| 67 20 69 6e 74 2d 64 61 | 74 65 2d 6e 75 6d 62 65 |g int-da|te-numbe| |00002150| 72 2e 22 29 29 0d 20 20 | 28 77 68 65 6e 20 28 61 |r.")). |(when (a| |00002160| 6e 64 20 69 6e 74 2d 64 | 61 79 2d 6f 66 2d 77 65 |nd int-d|ay-of-we| |00002170| 65 6b 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |ek. | | |00002180| 28 6e 6f 74 20 28 74 79 | 70 65 70 20 69 6e 74 2d |(not (ty|pep int-| |00002190| 64 61 79 2d 6f 66 2d 77 | 65 65 6b 20 27 28 69 6e |day-of-w|eek '(in| |000021a0| 74 65 67 65 72 20 30 20 | 36 29 29 29 29 0d 20 20 |teger 0 |6)))). | |000021b0| 20 20 28 65 72 72 6f 72 | 20 22 49 6e 74 2d 64 61 | (error| "Int-da| |000021c0| 79 2d 6f 66 2d 77 65 65 | 6b 20 7e 53 20 77 61 73 |y-of-wee|k ~S was| |000021d0| 20 6e 6f 74 20 61 6e 20 | 69 6e 74 65 67 65 72 20 | not an |integer | |000021e0| 62 65 74 77 65 65 6e 20 | 30 20 61 6e 64 20 36 20 |between |0 and 6 | |000021f0| 69 6e 63 6c 75 73 69 76 | 65 2e 22 0d 20 20 20 20 |inclusiv|e.". | |00002200| 20 20 20 20 20 20 20 69 | 6e 74 2d 64 61 79 2d 6f | i|nt-day-o| |00002210| 66 2d 77 65 65 6b 29 29 | 0d 20 20 28 77 68 65 6e |f-week))|. (when| |00002220| 20 28 61 6e 64 20 69 6e | 74 2d 6d 6f 6e 74 68 2d | (and in|t-month-| |00002230| 6e 75 6d 62 65 72 0d 20 | 20 20 20 20 20 20 20 20 |number. | | |00002240| 20 20 20 20 28 6e 6f 74 | 20 28 74 79 70 65 70 20 | (not| (typep | |00002250| 69 6e 74 2d 6d 6f 6e 74 | 68 2d 6e 75 6d 62 65 72 |int-mont|h-number| |00002260| 20 27 28 69 6e 74 65 67 | 65 72 20 31 20 31 32 29 | '(integ|er 1 12)| |00002270| 29 29 29 0d 20 20 20 20 | 28 65 72 72 6f 72 20 22 |))). |(error "| |00002280| 49 6e 74 2d 6d 6f 6e 74 | 68 2d 6e 75 6d 62 65 72 |Int-mont|h-number| |00002290| 20 7e 53 20 77 61 73 20 | 6e 6f 74 20 61 6e 20 69 | ~S was |not an i| |000022a0| 6e 74 65 67 65 72 20 62 | 65 74 77 65 65 6e 20 31 |nteger b|etween 1| |000022b0| 20 61 6e 64 20 31 32 20 | 69 6e 63 6c 75 73 69 76 | and 12 |inclusiv| |000022c0| 65 2e 22 0d 20 20 20 20 | 20 20 20 20 20 20 20 69 |e.". | i| |000022d0| 6e 74 2d 6d 6f 6e 74 68 | 2d 6e 75 6d 62 65 72 29 |nt-month|-number)| |000022e0| 29 0d 20 20 28 77 68 65 | 6e 20 28 61 6e 64 20 69 |). (whe|n (and i| |000022f0| 6e 74 2d 64 61 79 2d 6f | 66 2d 77 65 65 6b 20 69 |nt-day-o|f-week i| |00002300| 6e 74 2d 64 61 74 65 2d | 6e 75 6d 62 65 72 20 69 |nt-date-|number i| |00002310| 6e 74 2d 6d 6f 6e 74 68 | 2d 6e 75 6d 62 65 72 20 |nt-month|-number | |00002320| 69 6e 74 2d 79 65 61 72 | 29 0d 20 20 20 20 28 6c |int-year|). (l| |00002330| 65 74 20 28 28 75 74 20 | 28 65 6e 63 6f 64 65 2d |et ((ut |(encode-| |00002340| 75 6e 69 76 65 72 73 61 | 6c 2d 74 69 6d 65 20 30 |universa|l-time 0| |00002350| 20 30 20 30 0d 20 20 20 | 20 20 20 20 20 20 20 20 | 0 0. | | |00002360| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002370| 20 20 20 20 20 20 20 20 | 20 20 69 6e 74 2d 64 61 | | int-da| |00002380| 74 65 2d 6e 75 6d 62 65 | 72 20 69 6e 74 2d 6d 6f |te-numbe|r int-mo| |00002390| 6e 74 68 2d 6e 75 6d 62 | 65 72 20 69 6e 74 2d 79 |nth-numb|er int-y| |000023a0| 65 61 72 29 29 29 0d 20 | 20 20 20 20 20 28 6d 75 |ear))). | (mu| |000023b0| 6c 74 69 70 6c 65 2d 76 | 61 6c 75 65 2d 62 69 6e |ltiple-v|alue-bin| |000023c0| 64 20 28 73 65 63 6f 6e | 64 20 6d 69 6e 75 74 65 |d (secon|d minute| |000023d0| 20 68 6f 75 72 20 64 61 | 74 65 20 6d 6f 6e 74 68 | hour da|te month| |000023e0| 20 79 65 61 72 20 64 61 | 79 2d 6f 66 2d 77 65 65 | year da|y-of-wee| |000023f0| 6b 29 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |k). | | |00002400| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 28 64 | | (d| |00002410| 65 63 6f 64 65 2d 75 6e | 69 76 65 72 73 61 6c 2d |ecode-un|iversal-| |00002420| 74 69 6d 65 20 75 74 29 | 0d 20 20 20 20 20 20 20 |time ut)|. | |00002430| 20 28 64 65 63 6c 61 72 | 65 20 28 69 67 6e 6f 72 | (declar|e (ignor| |00002440| 65 20 73 65 63 6f 6e 64 | 20 6d 69 6e 75 74 65 20 |e second| minute | |00002450| 68 6f 75 72 20 64 61 74 | 65 20 6d 6f 6e 74 68 20 |hour dat|e month | |00002460| 79 65 61 72 29 29 0d 20 | 20 20 20 20 20 20 20 3b |year)). | ;| |00002470| 3b 0d 20 20 20 20 20 20 | 20 20 28 77 68 65 6e 20 |;. | (when | |00002480| 28 2f 3d 20 64 61 79 2d | 6f 66 2d 77 65 65 6b 20 |(/= day-|of-week | |00002490| 69 6e 74 2d 64 61 79 2d | 6f 66 2d 77 65 65 6b 29 |int-day-|of-week)| |000024a0| 0d 20 20 20 20 20 20 20 | 20 20 20 28 65 72 72 6f |. | (erro| |000024b0| 72 20 22 49 6e 74 2d 64 | 61 79 2d 6f 66 2d 77 65 |r "Int-d|ay-of-we| |000024c0| 65 6b 20 7e 53 20 73 68 | 6f 75 6c 64 20 68 61 76 |ek ~S sh|ould hav| |000024d0| 65 20 62 65 65 6e 20 7e | 53 2e 22 20 69 6e 74 2d |e been ~|S." int-| |000024e0| 64 61 79 2d 6f 66 2d 77 | 65 65 6b 20 64 61 79 2d |day-of-w|eek day-| |000024f0| 6f 66 2d 77 65 65 6b 29 | 29 29 29 29 0d 20 20 3b |of-week)|)))). ;| |00002500| 3b 0d 20 20 28 6c 65 74 | 2a 20 28 28 73 74 72 2d |;. (let|* ((str-| |00002510| 64 61 79 20 28 61 6e 64 | 20 69 6e 74 2d 64 61 79 |day (and| int-day| |00002520| 2d 6f 66 2d 77 65 65 6b | 0d 20 20 20 20 20 20 20 |-of-week|. | |00002530| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002540| 28 65 6c 74 20 27 28 22 | 4d 6f 6e 22 20 22 54 75 |(elt '("|Mon" "Tu| |00002550| 65 22 20 22 57 65 64 22 | 20 22 54 68 75 22 20 22 |e" "Wed"| "Thu" "| |00002560| 46 72 69 22 20 22 53 61 | 74 22 20 22 53 75 6e 22 |Fri" "Sa|t" "Sun"| |00002570| 29 0d 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |). | | |00002580| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 69 6e | | in| |00002590| 74 2d 64 61 79 2d 6f 66 | 2d 77 65 65 6b 29 29 29 |t-day-of|-week)))| |000025a0| 0d 20 20 20 20 20 20 20 | 20 20 28 73 74 72 2d 6d |. | (str-m| |000025b0| 6f 6e 74 68 20 28 61 6e | 64 20 69 6e 74 2d 6d 6f |onth (an|d int-mo| |000025c0| 6e 74 68 2d 6e 75 6d 62 | 65 72 0d 20 20 20 20 20 |nth-numb|er. | |000025d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000025e0| 20 20 20 20 28 65 6c 74 | 20 27 28 6e 69 6c 20 22 | (elt| '(nil "| |000025f0| 4a 61 6e 22 20 22 46 65 | 62 22 20 22 4d 61 72 22 |Jan" "Fe|b" "Mar"| |00002600| 20 22 41 70 72 22 20 22 | 4d 61 79 22 20 22 4a 75 | "Apr" "|May" "Ju| |00002610| 6e 22 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |n". | | |00002620| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002630| 20 20 20 22 4a 75 6c 22 | 20 22 41 75 67 22 20 22 | "Jul"| "Aug" "| |00002640| 53 65 70 22 20 22 4f 63 | 74 22 20 22 4e 6f 76 22 |Sep" "Oc|t" "Nov"| |00002650| 20 22 44 65 63 22 29 0d | 20 20 20 20 20 20 20 20 | "Dec").| | |00002660| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002670| 20 20 20 20 20 20 69 6e | 74 2d 6d 6f 6e 74 68 2d | in|t-month-| |00002680| 6e 75 6d 62 65 72 29 29 | 29 0d 20 20 20 20 20 20 |number))|). | |00002690| 20 20 20 28 73 74 72 2d | 79 65 61 72 20 28 61 6e | (str-|year (an| |000026a0| 64 20 69 6e 74 2d 79 65 | 61 72 20 28 66 6f 72 6d |d int-ye|ar (form| |000026b0| 61 74 20 6e 69 6c 20 22 | 7e 34 2c 27 30 44 22 20 |at nil "|~4,'0D" | |000026c0| 69 6e 74 2d 79 65 61 72 | 29 29 29 0d 20 20 20 20 |int-year|))). | |000026d0| 20 20 20 20 20 28 73 74 | 72 2d 68 6f 75 72 2d 6d | (st|r-hour-m| |000026e0| 69 6e 75 74 65 20 28 61 | 6e 64 20 69 6e 74 2d 68 |inute (a|nd int-h| |000026f0| 6f 75 72 20 69 6e 74 2d | 6d 69 6e 75 74 65 0d 20 |our int-|minute. | |00002700| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002710| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 28 66 | | (f| |00002720| 6f 72 6d 61 74 20 6e 69 | 6c 20 22 7e 32 2c 27 30 |ormat ni|l "~2,'0| |00002730| 44 3a 7e 32 2c 27 30 44 | 22 20 69 6e 74 2d 68 6f |D:~2,'0D|" int-ho| |00002740| 75 72 20 69 6e 74 2d 6d | 69 6e 75 74 65 29 29 29 |ur int-m|inute)))| |00002750| 0d 20 20 20 20 20 20 20 | 20 20 28 77 68 65 6e 2d |. | (when-| |00002760| 73 74 72 69 6e 67 20 22 | 22 29 29 0d 20 20 20 20 |string "|")). | |00002770| 3b 3b 0d 20 20 20 20 3b | 3b 20 42 75 69 6c 64 20 |;;. ;|; Build | |00002780| 77 68 65 6e 2d 73 74 72 | 69 6e 67 20 2e 0d 20 20 |when-str|ing .. | |00002790| 20 20 3b 3b 0d 20 20 20 | 20 28 77 68 65 6e 20 73 | ;;. | (when s| |000027a0| 74 72 2d 68 6f 75 72 2d | 6d 69 6e 75 74 65 0d 20 |tr-hour-|minute. | |000027b0| 20 20 20 20 20 28 73 65 | 74 66 20 77 68 65 6e 2d | (se|tf when-| |000027c0| 73 74 72 69 6e 67 20 73 | 74 72 2d 68 6f 75 72 2d |string s|tr-hour-| |000027d0| 6d 69 6e 75 74 65 29 29 | 0d 20 20 20 20 28 77 68 |minute))|. (wh| |000027e0| 65 6e 20 69 6e 74 2d 64 | 61 79 2d 6f 66 2d 77 65 |en int-d|ay-of-we| |000027f0| 65 6b 0d 20 20 20 20 20 | 20 28 73 65 74 66 20 77 |ek. | (setf w| |00002800| 68 65 6e 2d 73 74 72 69 | 6e 67 20 28 63 6f 6e 63 |hen-stri|ng (conc| |00002810| 61 74 65 6e 61 74 65 20 | 27 73 74 72 69 6e 67 20 |atenate |'string | |00002820| 77 68 65 6e 2d 73 74 72 | 69 6e 67 20 22 2d 22 20 |when-str|ing "-" | |00002830| 73 74 72 2d 64 61 79 29 | 29 29 0d 20 20 20 20 28 |str-day)|)). (| |00002840| 77 68 65 6e 20 73 74 72 | 2d 6d 6f 6e 74 68 0d 20 |when str|-month. | |00002850| 20 20 20 20 20 28 73 65 | 74 66 20 77 68 65 6e 2d | (se|tf when-| |00002860| 73 74 72 69 6e 67 0d 20 | 20 20 20 20 20 20 20 20 |string. | | |00002870| 20 20 20 28 63 6f 6e 63 | 61 74 65 6e 61 74 65 20 | (conc|atenate | |00002880| 27 73 74 72 69 6e 67 20 | 77 68 65 6e 2d 73 74 72 |'string |when-str| |00002890| 69 6e 67 20 22 2d 22 0d | 20 20 20 20 20 20 20 20 |ing "-".| | |000028a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000028b0| 20 28 69 66 20 69 6e 74 | 2d 64 61 74 65 2d 6e 75 | (if int|-date-nu| |000028c0| 6d 62 65 72 0d 20 20 20 | 20 20 20 20 20 20 20 20 |mber. | | |000028d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000028e0| 28 66 6f 72 6d 61 74 20 | 6e 69 6c 20 22 7e 32 2c |(format |nil "~2,| |000028f0| 27 30 44 2d 7e 41 22 20 | 69 6e 74 2d 64 61 74 65 |'0D-~A" |int-date| |00002900| 2d 6e 75 6d 62 65 72 20 | 73 74 72 2d 6d 6f 6e 74 |-number |str-mont| |00002910| 68 29 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |h). | | |00002920| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 73 74 | | st| |00002930| 72 2d 6d 6f 6e 74 68 29 | 29 29 29 0d 20 20 20 20 |r-month)|))). | |00002940| 28 77 68 65 6e 20 73 74 | 72 2d 79 65 61 72 0d 20 |(when st|r-year. | |00002950| 20 20 20 20 20 28 73 65 | 74 66 20 77 68 65 6e 2d | (se|tf when-| |00002960| 73 74 72 69 6e 67 20 28 | 63 6f 6e 63 61 74 65 6e |string (|concaten| |00002970| 61 74 65 20 27 73 74 72 | 69 6e 67 20 77 68 65 6e |ate 'str|ing when| |00002980| 2d 73 74 72 69 6e 67 20 | 22 2d 22 20 73 74 72 2d |-string |"-" str-| |00002990| 79 65 61 72 29 29 29 0d | 20 20 20 20 3b 3b 20 43 |year))).| ;; C| |000029a0| 6f 72 72 65 63 74 20 66 | 6f 72 20 6c 65 61 64 69 |orrect f|or leadi| |000029b0| 6e 67 20 23 5c 2d 20 2e | 0d 20 20 20 20 28 73 65 |ng #\- .|. (se| |000029c0| 74 66 20 77 68 65 6e 2d | 73 74 72 69 6e 67 20 28 |tf when-|string (| |000029d0| 73 74 72 69 6e 67 2d 6c | 65 66 74 2d 74 72 69 6d |string-l|eft-trim| |000029e0| 20 22 2d 22 20 77 68 65 | 6e 2d 73 74 72 69 6e 67 | "-" whe|n-string| |000029f0| 29 29 0d 20 20 20 20 3b | 3b 20 52 65 74 75 72 6e |)). ;|; Return| |00002a00| 20 6f 72 20 65 72 72 6f | 72 2c 20 61 73 20 6e 65 | or erro|r, as ne| |00002a10| 63 65 73 73 61 72 79 2e | 0d 20 20 20 20 28 69 66 |cessary.|. (if| |00002a20| 20 28 66 2d 76 61 6c 69 | 64 2d 77 68 65 6e 2d 73 | (f-vali|d-when-s| |00002a30| 74 72 20 77 68 65 6e 2d | 73 74 72 69 6e 67 29 0d |tr when-|string).| |00002a40| 20 20 20 20 20 20 77 68 | 65 6e 2d 73 74 72 69 6e | wh|en-strin| |00002a50| 67 0d 20 20 20 20 20 20 | 28 65 72 72 6f 72 20 22 |g. |(error "| |00002a60| 43 6f 75 6c 64 6e 27 74 | 20 63 6f 6e 73 74 72 75 |Couldn't| constru| |00002a70| 63 74 20 61 20 76 61 6c | 69 64 20 77 68 65 6e 20 |ct a val|id when | |00002a80| 73 74 72 69 6e 67 20 28 | 6d 61 64 65 20 7e 53 29 |string (|made ~S)| |00002a90| 2e 22 20 77 68 65 6e 2d | 73 74 72 69 6e 67 29 29 |." when-|string))| |00002aa0| 29 29 0d 0d 0d 28 64 65 | 66 75 6e 20 77 68 65 6e |))...(de|fun when| |00002ab0| 2d 73 74 72 69 6e 67 2d | 6e 6f 77 20 28 26 6f 70 |-string-|now (&op| |00002ac0| 74 69 6f 6e 61 6c 20 28 | 66 2d 69 6e 63 6c 75 64 |tional (|f-includ| |00002ad0| 65 2d 68 6f 75 72 2d 61 | 6e 64 2d 6d 69 6e 75 74 |e-hour-a|nd-minut| |00002ae0| 65 20 74 29 29 0d 20 20 | 22 52 65 74 75 72 6e 73 |e t)). |"Returns| |00002af0| 20 61 20 77 68 65 6e 2d | 73 74 72 69 6e 67 20 62 | a when-|string b| |00002b00| 61 73 65 64 20 6f 6e 20 | 74 68 65 20 63 75 72 72 |ased on |the curr| |00002b10| 65 6e 74 20 76 61 6c 75 | 65 20 6f 66 20 67 65 74 |ent valu|e of get| |00002b20| 2d 64 65 63 6f 64 65 64 | 2d 74 69 6d 65 2e 20 49 |-decoded|-time. I| |00002b30| 66 0d 66 2d 69 6e 63 6c | 75 64 65 2d 68 6f 75 72 |f.f-incl|ude-hour| |00002b40| 2d 61 6e 64 2d 6d 69 6e | 75 74 65 20 69 73 20 6e |-and-min|ute is n| |00002b50| 6f 6e 2d 6e 69 6c 20 74 | 68 65 6e 20 74 68 65 79 |on-nil t|hen they| |00002b60| 20 61 72 65 20 69 6e 63 | 6c 75 64 65 64 2e 20 4f | are inc|luded. O| |00002b70| 74 68 65 72 77 69 73 65 | 20 6a 75 73 74 0d 74 68 |therwise| just.th| |00002b80| 65 20 64 61 74 65 2c 20 | 6d 6f 6e 74 68 2c 20 61 |e date, |month, a| |00002b90| 6e 64 20 79 65 61 72 20 | 61 72 65 20 69 6e 63 6c |nd year |are incl| |00002ba0| 75 64 65 64 2e 22 0d 20 | 20 28 64 65 63 6c 61 72 |uded.". | (declar| |00002bb0| 65 20 28 6f 70 74 69 6d | 69 7a 65 20 73 70 65 65 |e (optim|ize spee| |00002bc0| 64 29 29 0d 20 20 3b 3b | 0d 20 20 28 6d 75 6c 74 |d)). ;;|. (mult| |00002bd0| 69 70 6c 65 2d 76 61 6c | 75 65 2d 62 69 6e 64 20 |iple-val|ue-bind | |00002be0| 28 73 65 63 6f 6e 64 20 | 6d 69 6e 75 74 65 20 68 |(second |minute h| |00002bf0| 6f 75 72 20 64 61 74 65 | 20 6d 6f 6e 74 68 20 79 |our date| month y| |00002c00| 65 61 72 20 64 61 79 2d | 6f 66 2d 77 65 65 6b 29 |ear day-|of-week)| |00002c10| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00002c20| 20 20 20 20 20 20 20 20 | 28 67 65 74 2d 64 65 63 | |(get-dec| |00002c30| 6f 64 65 64 2d 74 69 6d | 65 29 0d 20 20 20 20 28 |oded-tim|e). (| |00002c40| 64 65 63 6c 61 72 65 20 | 28 69 67 6e 6f 72 65 20 |declare |(ignore | |00002c50| 73 65 63 6f 6e 64 20 64 | 61 79 2d 6f 66 2d 77 65 |second d|ay-of-we| |00002c60| 65 6b 29 29 0d 20 20 20 | 20 3b 3b 0d 20 20 20 20 |ek)). | ;;. | |00002c70| 28 69 66 20 66 2d 69 6e | 63 6c 75 64 65 2d 68 6f |(if f-in|clude-ho| |00002c80| 75 72 2d 61 6e 64 2d 6d | 69 6e 75 74 65 0d 20 20 |ur-and-m|inute. | |00002c90| 20 20 20 20 28 77 68 65 | 6e 2d 73 74 72 69 6e 67 | (whe|n-string| |00002ca0| 2d 6d 61 6b 65 20 3a 69 | 6e 74 2d 6d 69 6e 75 74 |-make :i|nt-minut| |00002cb0| 65 20 6d 69 6e 75 74 65 | 20 3a 69 6e 74 2d 68 6f |e minute| :int-ho| |00002cc0| 75 72 20 68 6f 75 72 0d | 20 20 20 20 20 20 20 20 |ur hour.| | |00002cd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002ce0| 3a 69 6e 74 2d 64 61 74 | 65 2d 6e 75 6d 62 65 72 |:int-dat|e-number| |00002cf0| 20 64 61 74 65 0d 20 20 | 20 20 20 20 20 20 20 20 | date. | | |00002d00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 3a 69 | | :i| |00002d10| 6e 74 2d 6d 6f 6e 74 68 | 2d 6e 75 6d 62 65 72 20 |nt-month|-number | |00002d20| 6d 6f 6e 74 68 20 3a 69 | 6e 74 2d 79 65 61 72 20 |month :i|nt-year | |00002d30| 79 65 61 72 0d 20 20 20 | 20 20 20 20 20 20 20 20 |year. | | |00002d40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 3b 3a 69 | | ;:i| |00002d50| 6e 74 2d 64 61 79 2d 6f | 66 2d 77 65 65 6b 20 64 |nt-day-o|f-week d| |00002d60| 61 79 2d 6f 66 2d 77 65 | 65 6b 0d 20 20 20 20 20 |ay-of-we|ek. | |00002d70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002d80| 20 20 20 29 0d 20 20 20 | 20 20 20 28 77 68 65 6e | ). | (when| |00002d90| 2d 73 74 72 69 6e 67 2d | 6d 61 6b 65 20 3a 69 6e |-string-|make :in| |00002da0| 74 2d 64 61 74 65 2d 6e | 75 6d 62 65 72 20 64 61 |t-date-n|umber da| |00002db0| 74 65 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |te. | | |00002dc0| 20 20 20 20 20 20 20 20 | 20 20 20 3a 69 6e 74 2d | | :int-| |00002dd0| 6d 6f 6e 74 68 2d 6e 75 | 6d 62 65 72 20 6d 6f 6e |month-nu|mber mon| |00002de0| 74 68 20 3a 69 6e 74 2d | 79 65 61 72 20 79 65 61 |th :int-|year yea| |00002df0| 72 29 29 29 29 0d 0d 0d | 3b 3b 3b 3d 3d 3d 3d 3d |r))))...|;;;=====| |00002e00| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00002e10| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00002e20| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00002e30| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 0d 3b 3b 3b 20 |========|===.;;; | |00002e40| 44 65 66 69 6e 65 20 73 | 75 70 70 6f 72 74 20 6d |Define s|upport m| |00002e50| 65 74 68 6f 64 73 2e 0d | 3b 3b 3b 3d 3d 3d 3d 3d |ethods..|;;;=====| |00002e60| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00002e70| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00002e80| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00002e90| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 0d 0d 28 64 65 |========|===..(de| |00002ea0| 66 6d 65 74 68 6f 64 20 | 6c 2d 66 69 65 6c 64 2d |fmethod |l-field-| |00002eb0| 73 70 65 63 73 2d 66 72 | 6f 6d 2d 77 68 65 6e 2d |specs-fr|om-when-| |00002ec0| 73 74 72 20 28 28 77 68 | 65 6e 2d 73 74 72 69 6e |str ((wh|en-strin| |00002ed0| 67 20 73 74 72 69 6e 67 | 29 29 0d 20 20 22 52 65 |g string|)). "Re| |00002ee0| 74 75 72 6e 73 20 61 20 | 6c 69 73 74 20 6f 66 20 |turns a |list of | |00002ef0| 66 69 65 6c 64 20 73 70 | 65 63 69 66 69 65 72 73 |field sp|ecifiers| |00002f00| 20 65 6e 63 6f 64 65 64 | 20 69 6e 20 77 68 65 6e | encoded| in when| |00002f10| 2d 73 74 72 69 6e 67 2e | 20 52 65 74 75 72 6e 73 |-string.| Returns| |00002f20| 20 6e 69 6c 0d 69 66 20 | 77 68 65 6e 2d 73 74 72 | nil.if |when-str| |00002f30| 69 6e 67 20 69 73 20 69 | 6e 76 61 6c 69 64 2e 20 |ing is i|nvalid. | |00002f40| 45 61 63 68 20 66 69 65 | 6c 64 20 73 70 65 63 20 |Each fie|ld spec | |00002f50| 69 73 20 61 20 6c 69 73 | 74 20 6f 66 20 61 20 6b |is a lis|t of a k| |00002f60| 77 2d 66 69 65 6c 64 2d | 74 79 70 65 20 61 73 0d |w-field-|type as.| |00002f70| 6c 69 73 74 65 64 20 61 | 62 6f 76 65 20 61 6e 64 |listed a|bove and| |00002f80| 20 61 20 66 69 65 6c 64 | 2d 76 61 6c 75 65 2e 20 | a field|-value. | |00002f90| 46 69 65 6c 64 20 76 61 | 6c 75 65 73 20 61 72 65 |Field va|lues are| |00002fa0| 20 61 73 20 66 6f 6c 6c | 6f 77 73 3a 0d 0d 3a 74 | as foll|ows:..:t| |00002fb0| 69 6d 65 09 09 09 2d 20 | 4c 69 73 74 20 6f 66 20 |ime...- |List of | |00002fc0| 69 6e 74 2d 68 6f 75 72 | 20 61 6e 64 20 69 6e 74 |int-hour| and int| |00002fd0| 2d 6d 69 6e 75 74 65 2e | 0d 3a 64 61 79 2d 6f 66 |-minute.|.:day-of| |00002fe0| 2d 77 65 65 6b 09 09 2d | 20 69 6e 74 2d 64 61 79 |-week..-| int-day| |00002ff0| 2d 6f 66 2d 77 65 65 6b | 0d 3a 64 61 74 65 2d 6e |-of-week|.:date-n| |00003000| 75 6d 62 65 72 09 09 2d | 20 69 6e 74 2d 64 61 74 |umber..-| int-dat| |00003010| 65 2d 6e 75 6d 62 65 72 | 0d 3a 6d 6f 6e 74 68 09 |e-number|.:month.| |00003020| 09 09 2d 20 69 6e 74 2d | 6d 6f 6e 74 68 2d 6e 75 |..- int-|month-nu| |00003030| 6d 62 65 72 0d 3a 79 65 | 61 72 09 09 09 2d 20 69 |mber.:ye|ar...- i| |00003040| 6e 74 2d 79 65 61 72 22 | 0d 20 20 28 64 65 63 6c |nt-year"|. (decl| |00003050| 61 72 65 20 28 6f 70 74 | 69 6d 69 7a 65 20 73 70 |are (opt|imize sp| |00003060| 65 65 64 29 29 0d 20 20 | 3b 3b 0d 20 20 28 6c 65 |eed)). |;;. (le| |00003070| 74 20 28 28 6c 2d 66 69 | 65 6c 64 2d 73 70 65 63 |t ((l-fi|eld-spec| |00003080| 73 20 28 29 29 0d 20 20 | 20 20 20 20 20 20 28 6c |s ()). | (l| |00003090| 2d 73 74 72 2d 66 69 65 | 6c 64 73 20 28 29 29 29 |-str-fie|lds ()))| |000030a0| 0d 20 20 20 20 3b 3b 0d | 20 20 20 20 3b 3b 20 42 |. ;;.| ;; B| |000030b0| 75 69 6c 64 20 6c 2d 73 | 74 72 2d 66 69 65 6c 64 |uild l-s|tr-field| |000030c0| 73 20 2e 0d 20 20 20 20 | 3b 3b 0d 20 20 20 20 28 |s .. |;;. (| |000030d0| 6c 65 74 2a 20 28 28 69 | 6e 74 2d 6e 75 6d 2d 64 |let* ((i|nt-num-d| |000030e0| 61 73 68 65 73 20 28 63 | 6f 75 6e 74 20 23 5c 2d |ashes (c|ount #\-| |000030f0| 20 77 68 65 6e 2d 73 74 | 72 69 6e 67 29 29 0d 20 | when-st|ring)). | |00003100| 20 20 20 20 20 20 20 20 | 20 20 28 69 6e 74 2d 70 | | (int-p| |00003110| 6f 73 2d 6c 61 73 74 2d | 64 61 73 68 20 2d 31 29 |os-last-|dash -1)| |00003120| 0d 20 20 20 20 20 20 20 | 20 20 20 20 69 6e 74 2d |. | int-| |00003130| 70 6f 73 2d 6e 65 78 74 | 2d 64 61 73 68 20 73 74 |pos-next|-dash st| |00003140| 72 2d 66 69 65 6c 64 29 | 0d 20 20 20 20 20 20 28 |r-field)|. (| |00003150| 64 6f 74 69 6d 65 73 20 | 28 69 6e 74 2d 66 69 65 |dotimes |(int-fie| |00003160| 6c 64 2d 6e 75 6d 62 65 | 72 20 28 31 2b 20 69 6e |ld-numbe|r (1+ in| |00003170| 74 2d 6e 75 6d 2d 64 61 | 73 68 65 73 29 29 0d 20 |t-num-da|shes)). | |00003180| 20 20 20 20 20 20 20 28 | 73 65 74 66 20 69 6e 74 | (|setf int| |00003190| 2d 70 6f 73 2d 6e 65 78 | 74 2d 64 61 73 68 20 28 |-pos-nex|t-dash (| |000031a0| 70 6f 73 69 74 69 6f 6e | 20 23 5c 2d 20 77 68 65 |position| #\- whe| |000031b0| 6e 2d 73 74 72 69 6e 67 | 0d 20 20 20 20 20 20 20 |n-string|. | |000031c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000031d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000031e0| 20 20 20 3a 73 74 61 72 | 74 20 28 31 2b 20 69 6e | :star|t (1+ in| |000031f0| 74 2d 70 6f 73 2d 6c 61 | 73 74 2d 64 61 73 68 29 |t-pos-la|st-dash)| |00003200| 29 0d 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |). | | |00003210| 73 74 72 2d 66 69 65 6c | 64 20 28 73 75 62 73 65 |str-fiel|d (subse| |00003220| 71 20 77 68 65 6e 2d 73 | 74 72 69 6e 67 20 28 31 |q when-s|tring (1| |00003230| 2b 20 69 6e 74 2d 70 6f | 73 2d 6c 61 73 74 2d 64 |+ int-po|s-last-d| |00003240| 61 73 68 29 0d 20 20 20 | 20 20 20 20 20 20 20 20 |ash). | | |00003250| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00003260| 20 20 20 20 20 69 6e 74 | 2d 70 6f 73 2d 6e 65 78 | int|-pos-nex| |00003270| 74 2d 64 61 73 68 29 0d | 20 20 20 20 20 20 20 20 |t-dash).| | |00003280| 20 20 20 20 20 20 69 6e | 74 2d 70 6f 73 2d 6c 61 | in|t-pos-la| |00003290| 73 74 2d 64 61 73 68 20 | 69 6e 74 2d 70 6f 73 2d |st-dash |int-pos-| |000032a0| 6e 65 78 74 2d 64 61 73 | 68 29 0d 20 20 20 20 20 |next-das|h). | |000032b0| 20 20 20 28 77 68 65 6e | 20 73 74 72 2d 66 69 65 | (when| str-fie| |000032c0| 6c 64 20 28 70 75 73 68 | 20 73 74 72 2d 66 69 65 |ld (push| str-fie| |000032d0| 6c 64 20 6c 2d 73 74 72 | 2d 66 69 65 6c 64 73 29 |ld l-str|-fields)| |000032e0| 29 29 29 0d 20 20 20 20 | 3b 3b 0d 20 20 20 20 3b |))). |;;. ;| |000032f0| 3b 20 42 75 69 6c 64 20 | 61 6e 64 20 72 65 74 75 |; Build |and retu| |00003300| 72 6e 20 6c 2d 66 69 65 | 6c 64 2d 73 70 65 63 73 |rn l-fie|ld-specs| |00003310| 20 69 66 20 69 74 27 73 | 20 76 61 6c 69 64 2e 0d | if it's| valid..| |00003320| 20 20 20 20 3b 3b 0d 20 | 20 20 20 28 73 65 74 66 | ;;. | (setf| |00003330| 20 6c 2d 66 69 65 6c 64 | 2d 73 70 65 63 73 0d 20 | l-field|-specs. | |00003340| 20 20 20 20 20 20 20 20 | 20 28 6d 61 70 20 27 6c | | (map 'l| |00003350| 69 73 74 20 23 27 66 69 | 65 6c 64 2d 73 70 65 63 |ist #'fi|eld-spec| |00003360| 2d 66 72 6f 6d 2d 73 74 | 72 2d 66 69 65 6c 64 20 |-from-st|r-field | |00003370| 6c 2d 73 74 72 2d 66 69 | 65 6c 64 73 29 29 0d 20 |l-str-fi|elds)). | |00003380| 20 20 20 3b 3b 0d 20 20 | 20 20 3b 3b 20 43 68 65 | ;;. | ;; Che| |00003390| 63 6b 20 63 6f 6e 73 74 | 72 61 69 6e 74 73 2e 0d |ck const|raints..| |000033a0| 20 20 20 20 3b 3b 0d 20 | 20 20 20 28 69 66 20 28 | ;;. | (if (| |000033b0| 6f 72 20 28 6e 75 6c 6c | 20 6c 2d 66 69 65 6c 64 |or (null| l-field| |000033c0| 2d 73 70 65 63 73 29 0d | 20 20 20 20 20 20 20 20 |-specs).| | |000033d0| 20 20 20 20 28 6d 65 6d | 62 65 72 20 6e 69 6c 20 | (mem|ber nil | |000033e0| 6c 2d 66 69 65 6c 64 2d | 73 70 65 63 73 29 0d 20 |l-field-|specs). | |000033f0| 20 20 20 20 20 20 20 20 | 20 20 20 28 61 6e 64 20 | | (and | |00003400| 28 6d 65 6d 62 65 72 20 | 3a 64 61 74 65 2d 6e 75 |(member |:date-nu| |00003410| 6d 62 65 72 20 6c 2d 66 | 69 65 6c 64 2d 73 70 65 |mber l-f|ield-spe| |00003420| 63 73 20 3a 6b 65 79 20 | 23 27 66 69 72 73 74 29 |cs :key |#'first)| |00003430| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00003440| 20 20 28 6e 6f 74 20 28 | 6d 65 6d 62 65 72 20 3a | (not (|member :| |00003450| 6d 6f 6e 74 68 20 6c 2d | 66 69 65 6c 64 2d 73 70 |month l-|field-sp| |00003460| 65 63 73 20 3a 6b 65 79 | 20 23 27 66 69 72 73 74 |ecs :key| #'first| |00003470| 29 29 29 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |))). | | |00003480| 28 6c 65 74 20 28 28 6c | 2d 6b 77 2d 66 69 65 6c |(let ((l|-kw-fiel| |00003490| 64 2d 74 79 70 65 20 28 | 6d 61 70 20 27 6c 69 73 |d-type (|map 'lis| |000034a0| 74 20 23 27 66 69 72 73 | 74 20 6c 2d 66 69 65 6c |t #'firs|t l-fiel| |000034b0| 64 2d 73 70 65 63 73 29 | 29 29 0d 20 20 20 20 20 |d-specs)|)). | |000034c0| 20 20 20 20 20 20 20 20 | 20 28 6e 6f 74 20 28 65 | | (not (e| |000034d0| 71 75 61 6c 20 6c 2d 6b | 77 2d 66 69 65 6c 64 2d |qual l-k|w-field-| |000034e0| 74 79 70 65 0d 20 20 20 | 20 20 20 20 20 20 20 20 |type. | | |000034f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 28 | | (| |00003500| 72 65 6d 6f 76 65 2d 64 | 75 70 6c 69 63 61 74 65 |remove-d|uplicate| |00003510| 73 20 6c 2d 6b 77 2d 66 | 69 65 6c 64 2d 74 79 70 |s l-kw-f|ield-typ| |00003520| 65 29 29 29 29 29 0d 20 | 20 20 20 20 20 6e 69 6c |e))))). | nil| |00003530| 0d 20 20 20 20 20 20 6c | 2d 66 69 65 6c 64 2d 73 |. l|-field-s| |00003540| 70 65 63 73 29 29 29 0d | 0d 0d 28 64 65 66 6d 65 |pecs))).|..(defme| |00003550| 74 68 6f 64 20 66 69 65 | 6c 64 2d 73 70 65 63 2d |thod fie|ld-spec-| |00003560| 66 72 6f 6d 2d 73 74 72 | 2d 66 69 65 6c 64 20 28 |from-str|-field (| |00003570| 28 73 74 72 2d 66 69 65 | 6c 64 20 73 74 72 69 6e |(str-fie|ld strin| |00003580| 67 29 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |g). | | |00003590| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000035a0| 20 20 20 20 20 20 20 20 | 26 61 75 78 20 28 6c 2d | |&aux (l-| |000035b0| 73 74 72 2d 66 69 65 6c | 64 20 28 6c 65 6e 67 74 |str-fiel|d (lengt| |000035c0| 68 20 73 74 72 2d 66 69 | 65 6c 64 29 29 0d 20 20 |h str-fi|eld)). | |000035d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000035e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000035f0| 20 20 20 74 65 6d 70 20 | 74 65 6d 70 32 29 0d 20 | temp |temp2). | |00003600| 20 22 52 65 74 75 72 6e | 73 20 61 20 66 69 65 6c | "Return|s a fiel| |00003610| 64 2d 73 70 65 63 20 62 | 61 73 65 64 20 6f 6e 20 |d-spec b|ased on | |00003620| 73 74 72 2d 66 69 65 6c | 64 20 6f 72 20 6e 69 6c |str-fiel|d or nil| |00003630| 20 69 66 20 73 74 72 69 | 6e 67 20 64 6f 65 73 6e | if stri|ng doesn| |00003640| 27 74 0d 72 65 70 72 65 | 73 65 6e 74 20 6f 6e 65 |'t.repre|sent one| |00003650| 2e 22 0d 20 20 3b 3b 0d | 20 20 28 63 6f 6e 64 0d |.". ;;.| (cond.| |00003660| 20 20 20 3b 3b 20 43 68 | 65 63 6b 20 66 6f 72 20 | ;; Ch|eck for | |00003670| 3a 74 69 6d 65 0d 20 20 | 20 28 28 61 6e 64 20 28 |:time. | ((and (| |00003680| 3d 20 6c 2d 73 74 72 2d | 66 69 65 6c 64 20 35 29 |= l-str-|field 5)| |00003690| 0d 20 20 20 20 20 20 20 | 20 20 28 73 65 74 66 20 |. | (setf | |000036a0| 74 65 6d 70 20 28 70 6f | 73 69 74 69 6f 6e 20 23 |temp (po|sition #| |000036b0| 5c 3a 20 73 74 72 2d 66 | 69 65 6c 64 29 29 20 0d |\: str-f|ield)) .| |000036c0| 20 20 20 20 20 20 20 20 | 20 28 3d 20 74 65 6d 70 | | (= temp| |000036d0| 20 32 29 0d 20 20 20 20 | 20 20 20 20 20 28 3c 3d | 2). | (<=| |000036e0| 20 28 63 68 61 72 2d 63 | 6f 64 65 20 23 5c 30 29 | (char-c|ode #\0)| |000036f0| 20 28 63 68 61 72 2d 63 | 6f 64 65 20 28 65 6c 74 | (char-c|ode (elt| |00003700| 20 73 74 72 2d 66 69 65 | 6c 64 20 30 29 29 20 28 | str-fie|ld 0)) (| |00003710| 63 68 61 72 2d 63 6f 64 | 65 20 23 5c 39 29 29 0d |char-cod|e #\9)).| |00003720| 20 20 20 20 20 20 20 20 | 20 28 3c 3d 20 28 63 68 | | (<= (ch| |00003730| 61 72 2d 63 6f 64 65 20 | 23 5c 30 29 20 28 63 68 |ar-code |#\0) (ch| |00003740| 61 72 2d 63 6f 64 65 20 | 28 65 6c 74 20 73 74 72 |ar-code |(elt str| |00003750| 2d 66 69 65 6c 64 20 31 | 29 29 20 28 63 68 61 72 |-field 1|)) (char| |00003760| 2d 63 6f 64 65 20 23 5c | 39 29 29 0d 20 20 20 20 |-code #\|9)). | |00003770| 20 20 20 20 20 28 3c 3d | 20 28 63 68 61 72 2d 63 | (<=| (char-c| |00003780| 6f 64 65 20 23 5c 30 29 | 20 28 63 68 61 72 2d 63 |ode #\0)| (char-c| |00003790| 6f 64 65 20 28 65 6c 74 | 20 73 74 72 2d 66 69 65 |ode (elt| str-fie| |000037a0| 6c 64 20 33 29 29 20 28 | 63 68 61 72 2d 63 6f 64 |ld 3)) (|char-cod| |000037b0| 65 20 23 5c 39 29 29 0d | 20 20 20 20 20 20 20 20 |e #\9)).| | |000037c0| 20 28 3c 3d 20 28 63 68 | 61 72 2d 63 6f 64 65 20 | (<= (ch|ar-code | |000037d0| 23 5c 30 29 20 28 63 68 | 61 72 2d 63 6f 64 65 20 |#\0) (ch|ar-code | |000037e0| 28 65 6c 74 20 73 74 72 | 2d 66 69 65 6c 64 20 34 |(elt str|-field 4| |000037f0| 29 29 20 28 63 68 61 72 | 2d 63 6f 64 65 20 23 5c |)) (char|-code #\| |00003800| 39 29 29 0d 20 20 20 20 | 20 20 20 20 20 28 73 65 |9)). | (se| |00003810| 74 66 20 74 65 6d 70 20 | 28 72 65 61 64 2d 66 72 |tf temp |(read-fr| |00003820| 6f 6d 2d 73 74 72 69 6e | 67 20 73 74 72 2d 66 69 |om-strin|g str-fi| |00003830| 65 6c 64 20 6e 69 6c 20 | 3a 65 6f 66 20 3a 73 74 |eld nil |:eof :st| |00003840| 61 72 74 20 30 20 3a 65 | 6e 64 20 32 29 29 0d 20 |art 0 :e|nd 2)). | |00003850| 20 20 20 20 20 20 20 20 | 28 3c 3d 20 30 20 74 65 | |(<= 0 te| |00003860| 6d 70 20 32 33 29 0d 20 | 20 20 20 20 20 20 20 20 |mp 23). | | |00003870| 28 73 65 74 66 20 74 65 | 6d 70 32 20 28 72 65 61 |(setf te|mp2 (rea| |00003880| 64 2d 66 72 6f 6d 2d 73 | 74 72 69 6e 67 20 73 74 |d-from-s|tring st| |00003890| 72 2d 66 69 65 6c 64 20 | 6e 69 6c 20 3a 65 6f 66 |r-field |nil :eof| |000038a0| 20 3a 73 74 61 72 74 20 | 33 20 3a 65 6e 64 20 35 | :start |3 :end 5| |000038b0| 29 29 0d 20 20 20 20 20 | 20 20 20 20 28 3c 3d 20 |)). | (<= | |000038c0| 30 20 74 65 6d 70 32 20 | 35 39 29 29 0d 20 20 20 |0 temp2 |59)). | |000038d0| 20 60 28 3a 74 69 6d 65 | 20 28 2c 74 65 6d 70 20 | `(:time| (,temp | |000038e0| 2c 74 65 6d 70 32 29 29 | 29 0d 20 20 20 3b 3b 20 |,temp2))|). ;; | |000038f0| 43 68 65 63 6b 20 66 6f | 72 20 3a 64 61 79 2d 6f |Check fo|r :day-o| |00003900| 66 2d 77 65 65 6b 0d 20 | 20 20 28 28 61 6e 64 20 |f-week. | ((and | |00003910| 28 3d 20 6c 2d 73 74 72 | 2d 66 69 65 6c 64 20 33 |(= l-str|-field 3| |00003920| 29 0d 20 20 20 20 20 20 | 20 20 20 28 6d 65 6d 62 |). | (memb| |00003930| 65 72 20 28 65 6c 74 20 | 73 74 72 2d 66 69 65 6c |er (elt |str-fiel| |00003940| 64 20 30 29 20 28 63 6f | 65 72 63 65 20 22 4d 54 |d 0) (co|erce "MT| |00003950| 57 46 53 22 20 27 6c 69 | 73 74 29 20 20 3a 74 65 |WFS" 'li|st) :te| |00003960| 73 74 20 23 27 63 68 61 | 72 2d 65 71 75 61 6c 29 |st #'cha|r-equal)| |00003970| 0d 20 20 20 20 20 20 20 | 20 20 28 73 65 74 66 20 |. | (setf | |00003980| 74 65 6d 70 20 28 70 6f | 73 69 74 69 6f 6e 20 28 |temp (po|sition (| |00003990| 72 65 61 64 2d 66 72 6f | 6d 2d 73 74 72 69 6e 67 |read-fro|m-string| |000039a0| 20 73 74 72 2d 66 69 65 | 6c 64 29 0d 20 20 20 20 | str-fie|ld). | |000039b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000039c0| 20 20 20 20 20 20 20 20 | 20 20 27 28 4d 4f 4e 20 | | '(MON | |000039d0| 54 55 45 20 57 45 44 20 | 54 48 55 20 46 52 49 20 |TUE WED |THU FRI | |000039e0| 53 41 54 20 53 55 4e 29 | 29 29 29 0d 20 20 20 20 |SAT SUN)|))). | |000039f0| 60 28 3a 64 61 79 2d 6f | 66 2d 77 65 65 6b 20 2c |`(:day-o|f-week ,| |00003a00| 74 65 6d 70 29 29 0d 20 | 20 20 3b 3b 20 43 68 65 |temp)). | ;; Che| |00003a10| 63 6b 20 66 6f 72 20 3a | 64 61 74 65 2d 6e 75 6d |ck for :|date-num| |00003a20| 62 65 72 0d 20 20 20 28 | 28 61 6e 64 20 28 3d 20 |ber. (|(and (= | |00003a30| 6c 2d 73 74 72 2d 66 69 | 65 6c 64 20 32 29 0d 20 |l-str-fi|eld 2). | |00003a40| 20 20 20 20 20 20 20 20 | 28 3c 3d 20 28 63 68 61 | |(<= (cha| |00003a50| 72 2d 63 6f 64 65 20 23 | 5c 30 29 20 28 63 68 61 |r-code #|\0) (cha| |00003a60| 72 2d 63 6f 64 65 20 28 | 65 6c 74 20 73 74 72 2d |r-code (|elt str-| |00003a70| 66 69 65 6c 64 20 30 29 | 29 20 28 63 68 61 72 2d |field 0)|) (char-| |00003a80| 63 6f 64 65 20 23 5c 39 | 29 29 0d 20 20 20 20 20 |code #\9|)). | |00003a90| 20 20 20 20 28 3c 3d 20 | 28 63 68 61 72 2d 63 6f | (<= |(char-co| |00003aa0| 64 65 20 23 5c 30 29 20 | 28 63 68 61 72 2d 63 6f |de #\0) |(char-co| |00003ab0| 64 65 20 28 65 6c 74 20 | 73 74 72 2d 66 69 65 6c |de (elt |str-fiel| |00003ac0| 64 20 31 29 29 20 28 63 | 68 61 72 2d 63 6f 64 65 |d 1)) (c|har-code| |00003ad0| 20 23 5c 39 29 29 0d 20 | 20 20 20 20 20 20 20 20 | #\9)). | | |00003ae0| 28 73 65 74 66 20 74 65 | 6d 70 20 28 72 65 61 64 |(setf te|mp (read| |00003af0| 2d 66 72 6f 6d 2d 73 74 | 72 69 6e 67 20 73 74 72 |-from-st|ring str| |00003b00| 2d 66 69 65 6c 64 29 29 | 0d 20 20 20 20 20 20 20 |-field))|. | |00003b10| 20 20 28 3c 3d 20 31 20 | 74 65 6d 70 20 33 31 29 | (<= 1 |temp 31)| |00003b20| 29 0d 20 20 20 20 60 28 | 3a 64 61 74 65 2d 6e 75 |). `(|:date-nu| |00003b30| 6d 62 65 72 20 2c 74 65 | 6d 70 29 29 0d 20 20 20 |mber ,te|mp)). | |00003b40| 3b 3b 20 43 68 65 63 6b | 20 66 6f 72 20 3a 6d 6f |;; Check| for :mo| |00003b50| 6e 74 68 0d 20 20 20 28 | 28 61 6e 64 20 28 3d 20 |nth. (|(and (= | |00003b60| 6c 2d 73 74 72 2d 66 69 | 65 6c 64 20 33 29 0d 20 |l-str-fi|eld 3). | |00003b70| 20 20 20 20 20 20 20 20 | 28 6d 65 6d 62 65 72 20 | |(member | |00003b80| 28 65 6c 74 20 73 74 72 | 2d 66 69 65 6c 64 20 30 |(elt str|-field 0| |00003b90| 29 20 28 63 6f 65 72 63 | 65 20 22 4a 46 4d 41 53 |) (coerc|e "JFMAS| |00003ba0| 4f 4e 44 22 20 27 6c 69 | 73 74 29 20 3a 74 65 73 |OND" 'li|st) :tes| |00003bb0| 74 20 23 27 63 68 61 72 | 2d 65 71 75 61 6c 29 0d |t #'char|-equal).| |00003bc0| 20 20 20 20 20 20 20 20 | 20 28 73 65 74 66 20 74 | | (setf t| |00003bd0| 65 6d 70 20 28 70 6f 73 | 69 74 69 6f 6e 20 28 72 |emp (pos|ition (r| |00003be0| 65 61 64 2d 66 72 6f 6d | 2d 73 74 72 69 6e 67 20 |ead-from|-string | |00003bf0| 73 74 72 2d 66 69 65 6c | 64 29 0d 20 20 20 20 20 |str-fiel|d). | |00003c00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00003c10| 20 20 20 20 20 20 20 20 | 20 27 28 4a 41 4e 20 46 | | '(JAN F| |00003c20| 45 42 20 4d 41 52 20 41 | 50 52 20 4d 41 59 20 4a |EB MAR A|PR MAY J| |00003c30| 55 4e 20 4a 55 4c 20 41 | 55 47 20 53 45 50 20 4f |UN JUL A|UG SEP O| |00003c40| 43 54 20 4e 4f 56 20 44 | 45 43 29 29 29 29 0d 20 |CT NOV D|EC)))). | |00003c50| 20 20 20 60 28 3a 6d 6f | 6e 74 68 20 2c 28 31 2b | `(:mo|nth ,(1+| |00003c60| 20 74 65 6d 70 29 29 29 | 0d 20 20 20 3b 3b 20 43 | temp)))|. ;; C| |00003c70| 68 65 63 6b 20 66 6f 72 | 20 3a 79 65 61 72 0d 20 |heck for| :year. | |00003c80| 20 20 28 28 61 6e 64 20 | 28 3d 20 6c 2d 73 74 72 | ((and |(= l-str| |00003c90| 2d 66 69 65 6c 64 20 34 | 29 0d 20 20 20 20 20 20 |-field 4|). | |00003ca0| 20 20 20 28 3c 3d 20 28 | 63 68 61 72 2d 63 6f 64 | (<= (|char-cod| |00003cb0| 65 20 23 5c 30 29 20 28 | 63 68 61 72 2d 63 6f 64 |e #\0) (|char-cod| |00003cc0| 65 20 28 65 6c 74 20 73 | 74 72 2d 66 69 65 6c 64 |e (elt s|tr-field| |00003cd0| 20 30 29 29 20 28 63 68 | 61 72 2d 63 6f 64 65 20 | 0)) (ch|ar-code | |00003ce0| 23 5c 39 29 29 0d 20 20 | 20 20 20 20 20 20 20 28 |#\9)). | (| |00003cf0| 3c 3d 20 28 63 68 61 72 | 2d 63 6f 64 65 20 23 5c |<= (char|-code #\| |00003d00| 30 29 20 28 63 68 61 72 | 2d 63 6f 64 65 20 28 65 |0) (char|-code (e| |00003d10| 6c 74 20 73 74 72 2d 66 | 69 65 6c 64 20 31 29 29 |lt str-f|ield 1))| |00003d20| 20 28 63 68 61 72 2d 63 | 6f 64 65 20 23 5c 39 29 | (char-c|ode #\9)| |00003d30| 29 0d 20 20 20 20 20 20 | 20 20 20 28 3c 3d 20 28 |). | (<= (| |00003d40| 63 68 61 72 2d 63 6f 64 | 65 20 23 5c 30 29 20 28 |char-cod|e #\0) (| |00003d50| 63 68 61 72 2d 63 6f 64 | 65 20 28 65 6c 74 20 73 |char-cod|e (elt s| |00003d60| 74 72 2d 66 69 65 6c 64 | 20 32 29 29 20 28 63 68 |tr-field| 2)) (ch| |00003d70| 61 72 2d 63 6f 64 65 20 | 23 5c 39 29 29 0d 20 20 |ar-code |#\9)). | |00003d80| 20 20 20 20 20 20 20 28 | 3c 3d 20 28 63 68 61 72 | (|<= (char| |00003d90| 2d 63 6f 64 65 20 23 5c | 30 29 20 28 63 68 61 72 |-code #\|0) (char| |00003da0| 2d 63 6f 64 65 20 28 65 | 6c 74 20 73 74 72 2d 66 |-code (e|lt str-f| |00003db0| 69 65 6c 64 20 33 29 29 | 20 28 63 68 61 72 2d 63 |ield 3))| (char-c| |00003dc0| 6f 64 65 20 23 5c 39 29 | 29 0d 20 20 20 20 20 20 |ode #\9)|). | |00003dd0| 20 20 20 28 73 65 74 66 | 20 74 65 6d 70 20 28 72 | (setf| temp (r| |00003de0| 65 61 64 2d 66 72 6f 6d | 2d 73 74 72 69 6e 67 20 |ead-from|-string | |00003df0| 73 74 72 2d 66 69 65 6c | 64 29 29 0d 20 20 20 20 |str-fiel|d)). | |00003e00| 20 20 20 20 20 28 3e 3d | 20 74 65 6d 70 20 30 29 | (>=| temp 0)| |00003e10| 29 0d 20 20 20 20 60 28 | 3a 79 65 61 72 20 2c 74 |). `(|:year ,t| |00003e20| 65 6d 70 29 29 0d 20 20 | 20 3b 3b 0d 20 20 20 28 |emp)). | ;;. (| |00003e30| 74 20 6e 69 6c 29 29 29 | 0d 0d 0d 3b 3b 3b 3d 3d |t nil)))|...;;;==| |00003e40| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00003e50| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00003e60| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00003e70| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 0d 3b |========|======.;| |00003e80| 3b 3b 20 44 65 66 69 6e | 65 20 73 75 70 70 6f 72 |;; Defin|e suppor| |00003e90| 74 20 66 6f 72 20 66 2d | 77 68 65 6e 2d 73 74 72 |t for f-|when-str| |00003ea0| 2d 6d 61 74 63 68 65 73 | 2d 64 61 74 65 20 61 6e |-matches|-date an| |00003eb0| 64 20 66 2d 77 68 65 6e | 2d 73 74 72 2d 6d 61 74 |d f-when|-str-mat| |00003ec0| 63 68 65 73 2d 6d 6f 6e | 74 68 20 2e 0d 3b 3b 3b |ches-mon|th ..;;;| |00003ed0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00003ee0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00003ef0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00003f00| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00003f10| 0d 0d 28 64 65 66 67 65 | 6e 65 72 69 63 20 66 2d |..(defge|neric f-| |00003f20| 66 69 65 6c 64 2d 73 70 | 65 63 2d 6d 61 74 63 68 |field-sp|ec-match| |00003f30| 65 73 2d 76 61 6c 75 65 | 20 28 6b 77 2d 66 69 65 |es-value| (kw-fie| |00003f40| 6c 64 2d 74 79 70 65 20 | 66 69 65 6c 64 2d 76 61 |ld-type |field-va| |00003f50| 6c 75 65 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |lue. | | |00003f60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00003f70| 20 20 20 20 20 20 20 20 | 20 20 20 69 6e 74 2d 64 | | int-d| |00003f80| 61 79 2d 6f 66 2d 77 65 | 65 6b 20 69 6e 74 2d 64 |ay-of-we|ek int-d| |00003f90| 61 74 65 2d 6e 75 6d 62 | 65 72 0d 20 20 20 20 20 |ate-numb|er. | |00003fa0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00003fb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00003fc0| 20 20 69 6e 74 2d 6d 6f | 6e 74 68 2d 6e 75 6d 62 | int-mo|nth-numb| |00003fd0| 65 72 20 69 6e 74 2d 79 | 65 61 72 29 0d 20 20 28 |er int-y|ear). (| |00003fe0| 3a 64 6f 63 75 6d 65 6e | 74 61 74 69 6f 6e 20 22 |:documen|tation "| |00003ff0| 52 65 74 75 72 6e 73 20 | 6e 6f 6e 2d 6e 69 6c 20 |Returns |non-nil | |00004000| 69 66 20 6b 77 2d 66 69 | 65 6c 64 2d 74 79 70 65 |if kw-fi|eld-type| |00004010| 20 61 6e 64 20 66 69 65 | 6c 64 2d 76 61 6c 75 65 | and fie|ld-value| |00004020| 20 6d 61 74 63 68 0d 74 | 68 65 20 69 6e 66 6f 72 | match.t|he infor| |00004030| 6d 61 74 69 6f 6e 20 70 | 61 73 73 65 64 2e 22 29 |mation p|assed.")| |00004040| 29 0d 0d 0d 28 64 65 66 | 6d 65 74 68 6f 64 20 66 |)...(def|method f| |00004050| 2d 66 69 65 6c 64 2d 73 | 70 65 63 2d 6d 61 74 63 |-field-s|pec-matc| |00004060| 68 65 73 2d 76 61 6c 75 | 65 20 28 28 6b 77 2d 66 |hes-valu|e ((kw-f| |00004070| 69 65 6c 64 2d 74 79 70 | 65 20 28 65 71 6c 20 3a |ield-typ|e (eql :| |00004080| 64 61 74 65 2d 6e 75 6d | 62 65 72 29 29 0d 20 20 |date-num|ber)). | |00004090| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000040a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000040b0| 20 20 20 20 20 28 69 6e | 74 2d 64 61 74 65 2d 6e | (in|t-date-n| |000040c0| 75 6d 62 65 72 2d 76 61 | 6c 75 65 20 69 6e 74 65 |umber-va|lue inte| |000040d0| 67 65 72 29 0d 20 20 20 | 20 20 20 20 20 20 20 20 |ger). | | |000040e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000040f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 69 6e 74 2d | | int-| |00004100| 64 61 79 2d 6f 66 2d 77 | 65 65 6b 20 69 6e 74 2d |day-of-w|eek int-| |00004110| 64 61 74 65 2d 6e 75 6d | 62 65 72 0d 20 20 20 20 |date-num|ber. | |00004120| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004130| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004140| 20 20 20 69 6e 74 2d 6d | 6f 6e 74 68 2d 6e 75 6d | int-m|onth-num| |00004150| 62 65 72 20 69 6e 74 2d | 79 65 61 72 29 0d 20 20 |ber int-|year). | |00004160| 28 64 65 63 6c 61 72 65 | 20 28 6f 70 74 69 6d 69 |(declare| (optimi| |00004170| 7a 65 20 73 70 65 65 64 | 29 0d 20 20 20 20 20 20 |ze speed|). | |00004180| 20 20 20 20 20 28 69 67 | 6e 6f 72 65 20 69 6e 74 | (ig|nore int| |00004190| 2d 64 61 79 2d 6f 66 2d | 77 65 65 6b 20 69 6e 74 |-day-of-|week int| |000041a0| 2d 6d 6f 6e 74 68 2d 6e | 75 6d 62 65 72 20 69 6e |-month-n|umber in| |000041b0| 74 2d 79 65 61 72 29 29 | 0d 20 20 3b 3b 0d 20 20 |t-year))|. ;;. | |000041c0| 28 3d 20 69 6e 74 2d 64 | 61 74 65 2d 6e 75 6d 62 |(= int-d|ate-numb| |000041d0| 65 72 2d 76 61 6c 75 65 | 20 69 6e 74 2d 64 61 74 |er-value| int-dat| |000041e0| 65 2d 6e 75 6d 62 65 72 | 29 29 0d 0d 0d 28 64 65 |e-number|))...(de| |000041f0| 66 6d 65 74 68 6f 64 20 | 66 2d 66 69 65 6c 64 2d |fmethod |f-field-| |00004200| 73 70 65 63 2d 6d 61 74 | 63 68 65 73 2d 76 61 6c |spec-mat|ches-val| |00004210| 75 65 20 28 28 6b 77 2d | 66 69 65 6c 64 2d 74 79 |ue ((kw-|field-ty| |00004220| 70 65 20 28 65 71 6c 20 | 3a 6d 6f 6e 74 68 29 29 |pe (eql |:month))| |00004230| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00004240| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004250| 20 20 20 20 20 20 20 20 | 28 69 6e 74 2d 6d 6f 6e | |(int-mon| |00004260| 74 68 2d 6e 75 6d 62 65 | 72 2d 76 61 6c 75 65 20 |th-numbe|r-value | |00004270| 69 6e 74 65 67 65 72 29 | 0d 20 20 20 20 20 20 20 |integer)|. | |00004280| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004290| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000042a0| 69 6e 74 2d 64 61 79 2d | 6f 66 2d 77 65 65 6b 20 |int-day-|of-week | |000042b0| 69 6e 74 2d 64 61 74 65 | 2d 6e 75 6d 62 65 72 0d |int-date|-number.| |000042c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000042d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000042e0| 20 20 20 20 20 20 20 69 | 6e 74 2d 6d 6f 6e 74 68 | i|nt-month| |000042f0| 2d 6e 75 6d 62 65 72 20 | 69 6e 74 2d 79 65 61 72 |-number |int-year| |00004300| 29 0d 20 20 28 64 65 63 | 6c 61 72 65 20 28 6f 70 |). (dec|lare (op| |00004310| 74 69 6d 69 7a 65 20 73 | 70 65 65 64 29 0d 20 20 |timize s|peed). | |00004320| 20 20 20 20 20 20 20 20 | 20 28 69 67 6e 6f 72 65 | | (ignore| |00004330| 20 69 6e 74 2d 64 61 79 | 2d 6f 66 2d 77 65 65 6b | int-day|-of-week| |00004340| 20 69 6e 74 2d 64 61 74 | 65 2d 6e 75 6d 62 65 72 | int-dat|e-number| |00004350| 20 69 6e 74 2d 79 65 61 | 72 29 29 0d 20 20 3b 3b | int-yea|r)). ;;| |00004360| 0d 20 20 28 3d 20 69 6e | 74 2d 6d 6f 6e 74 68 2d |. (= in|t-month-| |00004370| 6e 75 6d 62 65 72 2d 76 | 61 6c 75 65 20 69 6e 74 |number-v|alue int| |00004380| 2d 6d 6f 6e 74 68 2d 6e | 75 6d 62 65 72 29 29 0d |-month-n|umber)).| |00004390| 0d 0d 28 64 65 66 6d 65 | 74 68 6f 64 20 66 2d 66 |..(defme|thod f-f| |000043a0| 69 65 6c 64 2d 73 70 65 | 63 2d 6d 61 74 63 68 65 |ield-spe|c-matche| |000043b0| 73 2d 76 61 6c 75 65 20 | 28 28 6b 77 2d 66 69 65 |s-value |((kw-fie| |000043c0| 6c 64 2d 74 79 70 65 20 | 28 65 71 6c 20 3a 79 65 |ld-type |(eql :ye| |000043d0| 61 72 29 29 0d 20 20 20 | 20 20 20 20 20 20 20 20 |ar)). | | |000043e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000043f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 28 69 6e 74 | | (int| |00004400| 2d 69 6e 74 2d 79 65 61 | 72 2d 76 61 6c 75 65 20 |-int-yea|r-value | |00004410| 69 6e 74 65 67 65 72 29 | 0d 20 20 20 20 20 20 20 |integer)|. | |00004420| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004430| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004440| 69 6e 74 2d 64 61 79 2d | 6f 66 2d 77 65 65 6b 20 |int-day-|of-week | |00004450| 69 6e 74 2d 64 61 74 65 | 2d 6e 75 6d 62 65 72 0d |int-date|-number.| |00004460| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004470| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004480| 20 20 20 20 20 20 20 69 | 6e 74 2d 6d 6f 6e 74 68 | i|nt-month| |00004490| 2d 6e 75 6d 62 65 72 20 | 69 6e 74 2d 79 65 61 72 |-number |int-year| |000044a0| 29 0d 20 20 28 64 65 63 | 6c 61 72 65 20 28 6f 70 |). (dec|lare (op| |000044b0| 74 69 6d 69 7a 65 20 73 | 70 65 65 64 29 0d 20 20 |timize s|peed). | |000044c0| 20 20 20 20 20 20 20 20 | 20 28 69 67 6e 6f 72 65 | | (ignore| |000044d0| 20 69 6e 74 2d 64 61 79 | 2d 6f 66 2d 77 65 65 6b | int-day|-of-week| |000044e0| 20 69 6e 74 2d 64 61 74 | 65 2d 6e 75 6d 62 65 72 | int-dat|e-number| |000044f0| 20 69 6e 74 2d 6d 6f 6e | 74 68 2d 6e 75 6d 62 65 | int-mon|th-numbe| |00004500| 72 29 29 0d 20 20 3b 3b | 0d 20 20 28 3d 20 69 6e |r)). ;;|. (= in| |00004510| 74 2d 69 6e 74 2d 79 65 | 61 72 2d 76 61 6c 75 65 |t-int-ye|ar-value| |00004520| 20 69 6e 74 2d 79 65 61 | 72 29 29 0d 0d 0d 28 64 | int-yea|r))...(d| |00004530| 65 66 6d 65 74 68 6f 64 | 20 66 2d 66 69 65 6c 64 |efmethod| f-field| |00004540| 2d 73 70 65 63 2d 6d 61 | 74 63 68 65 73 2d 76 61 |-spec-ma|tches-va| |00004550| 6c 75 65 20 28 28 6b 77 | 2d 66 69 65 6c 64 2d 74 |lue ((kw|-field-t| |00004560| 79 70 65 20 28 65 71 6c | 20 3a 64 61 79 2d 6f 66 |ype (eql| :day-of| |00004570| 2d 77 65 65 6b 29 29 0d | 20 20 20 20 20 20 20 20 |-week)).| | |00004580| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004590| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 28 | | (| |000045a0| 69 6e 74 2d 64 61 79 2d | 6f 66 2d 77 65 65 6b 2d |int-day-|of-week-| |000045b0| 76 61 6c 75 65 20 69 6e | 74 65 67 65 72 29 0d 20 |value in|teger). | |000045c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000045d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000045e0| 20 20 20 20 20 20 69 6e | 74 2d 64 61 79 2d 6f 66 | in|t-day-of| |000045f0| 2d 77 65 65 6b 20 69 6e | 74 2d 64 61 74 65 2d 6e |-week in|t-date-n| |00004600| 75 6d 62 65 72 0d 20 20 | 20 20 20 20 20 20 20 20 |umber. | | |00004610| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004620| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 69 6e 74 | | int| |00004630| 2d 6d 6f 6e 74 68 2d 6e | 75 6d 62 65 72 20 69 6e |-month-n|umber in| |00004640| 74 2d 79 65 61 72 29 0d | 20 20 28 64 65 63 6c 61 |t-year).| (decla| |00004650| 72 65 20 28 6f 70 74 69 | 6d 69 7a 65 20 73 70 65 |re (opti|mize spe| |00004660| 65 64 29 0d 20 20 20 20 | 20 20 20 20 20 20 20 28 |ed). | (| |00004670| 69 67 6e 6f 72 65 20 69 | 6e 74 2d 64 61 74 65 2d |ignore i|nt-date-| |00004680| 6e 75 6d 62 65 72 20 69 | 6e 74 2d 6d 6f 6e 74 68 |number i|nt-month| |00004690| 2d 6e 75 6d 62 65 72 20 | 69 6e 74 2d 79 65 61 72 |-number |int-year| |000046a0| 29 29 0d 20 20 3b 3b 0d | 20 20 28 3d 20 69 6e 74 |)). ;;.| (= int| |000046b0| 2d 64 61 79 2d 6f 66 2d | 77 65 65 6b 2d 76 61 6c |-day-of-|week-val| |000046c0| 75 65 20 69 6e 74 2d 64 | 61 79 2d 6f 66 2d 77 65 |ue int-d|ay-of-we| |000046d0| 65 6b 29 29 0d 0d 0d 3b | 3b 3b 3d 3d 3d 3d 3d 3d |ek))...;|;;======| |000046e0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |000046f0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00004700| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00004710| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 0d 3b 3b 3b 20 44 |========|==.;;; D| |00004720| 6f 6e 65 2e 0d 3b 3b 3b | 3d 3d 3d 3d 3d 3d 3d 3d |one..;;;|========| |00004730| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00004740| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00004750| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========| |00004760| 3d 3d 3d 3d 3d 3d 3d 3d | 0d 0d 28 70 72 6f 76 69 |========|..(provi| |00004770| 64 65 20 22 57 48 45 4e | 2d 53 54 52 49 4e 47 53 |de "WHEN|-STRINGS| |00004780| 22 29 0d 0d 0d 23 7c 20 | 3b 3b 3b 20 44 6f 20 73 |")...#| |;;; Do s| |00004790| 6f 6d 65 20 74 65 73 74 | 69 6e 67 2e 0d 0d 28 64 |ome test|ing...(d| |000047a0| 65 66 70 61 72 61 6d 65 | 74 65 72 20 2a 6c 2d 77 |efparame|ter *l-w| |000047b0| 68 65 6e 2d 73 74 72 69 | 6e 67 2a 20 27 28 22 32 |hen-stri|ng* '("2| |000047c0| 30 3a 31 35 2d 54 68 75 | 22 20 22 54 75 65 22 20 |0:15-Thu|" "Tue" | |000047d0| 22 57 65 64 22 0d 20 20 | 20 20 20 20 20 20 20 20 |"Wed". | | |000047e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000047f0| 20 20 20 20 20 20 20 22 | 32 35 2d 44 65 63 22 20 | "|25-Dec" | |00004800| 22 32 32 2d 4f 63 74 22 | 0d 20 20 20 20 20 20 20 |"22-Oct"|. | |00004810| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004820| 20 20 20 20 20 20 20 20 | 20 20 22 32 32 3a 33 33 | | "22:33| |00004830| 2d 31 31 2d 4d 61 79 2d | 31 39 36 31 22 20 22 32 |-11-May-|1961" "2| |00004840| 31 2d 4a 61 6e 2d 31 39 | 39 32 22 29 0d 20 20 22 |1-Jan-19|92"). "| |00004850| 41 20 6c 69 73 74 20 6f | 66 20 77 68 65 6e 2d 73 |A list o|f when-s| |00004860| 74 72 69 6e 67 73 20 66 | 6f 72 20 74 65 73 74 69 |trings f|or testi| |00004870| 6e 67 2e 22 29 0d 0d 0d | 28 6d 61 70 20 6e 69 6c |ng.")...|(map nil| |00004880| 20 23 27 28 6c 61 6d 62 | 64 61 20 28 77 68 65 6e | #'(lamb|da (when| |00004890| 2d 73 74 72 69 6e 67 29 | 0d 20 20 20 20 20 20 20 |-string)|. | |000048a0| 20 20 20 20 20 20 28 66 | 6f 72 6d 61 74 20 74 20 | (f|ormat t | |000048b0| 22 7e 26 7e 53 20 2d 3e | 7e 32 30 54 7e 53 22 20 |"~&~S ->|~20T~S" | |000048c0| 77 68 65 6e 2d 73 74 72 | 69 6e 67 0d 20 20 20 20 |when-str|ing. | |000048d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000048e0| 20 28 6c 2d 66 69 65 6c | 64 2d 73 70 65 63 73 2d | (l-fiel|d-specs-| |000048f0| 66 72 6f 6d 2d 77 68 65 | 6e 2d 73 74 72 20 77 68 |from-whe|n-str wh| |00004900| 65 6e 2d 73 74 72 69 6e | 67 29 29 29 0d 20 20 20 |en-strin|g))). | |00004910| 20 20 2a 6c 2d 77 68 65 | 6e 2d 73 74 72 69 6e 67 | *l-whe|n-string| |00004920| 2a 29 0d 0d 0d 28 6c 65 | 74 20 28 28 75 74 20 28 |*)...(le|t ((ut (| |00004930| 67 65 74 2d 75 6e 69 76 | 65 72 73 61 6c 2d 74 69 |get-univ|ersal-ti| |00004940| 6d 65 29 29 29 0d 20 20 | 28 6d 75 6c 74 69 70 6c |me))). |(multipl| |00004950| 65 2d 76 61 6c 75 65 2d | 62 69 6e 64 20 28 73 65 |e-value-|bind (se| |00004960| 63 6f 6e 64 20 6d 69 6e | 75 74 65 20 68 6f 75 72 |cond min|ute hour| |00004970| 20 64 61 74 65 20 6d 6f | 6e 74 68 20 79 65 61 72 | date mo|nth year| |00004980| 20 64 61 79 2d 6f 66 2d | 77 65 65 6b 29 0d 20 20 | day-of-|week). | |00004990| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000049a0| 20 20 20 20 20 28 64 65 | 63 6f 64 65 2d 75 6e 69 | (de|code-uni| |000049b0| 76 65 72 73 61 6c 2d 74 | 69 6d 65 20 75 74 29 0d |versal-t|ime ut).| |000049c0| 20 20 20 20 28 64 65 63 | 6c 61 72 65 20 28 69 67 | (dec|lare (ig| |000049d0| 6e 6f 72 65 20 73 65 63 | 6f 6e 64 29 29 0d 20 20 |nore sec|ond)). | |000049e0| 20 20 3b 3b 0d 20 20 20 | 20 28 6c 65 74 2a 20 28 | ;;. | (let* (| |000049f0| 28 73 74 72 2d 6d 6f 6e | 74 68 20 28 65 6c 74 20 |(str-mon|th (elt | |00004a00| 27 28 6e 69 6c 20 22 4a | 61 6e 22 20 22 46 65 62 |'(nil "J|an" "Feb| |00004a10| 22 20 22 4d 61 72 22 20 | 22 41 70 72 22 20 22 4d |" "Mar" |"Apr" "M| |00004a20| 61 79 22 20 22 4a 75 6e | 22 0d 20 20 20 20 20 20 |ay" "Jun|". | |00004a30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004a40| 20 20 20 20 20 20 20 22 | 4a 75 6c 22 20 22 41 75 | "|Jul" "Au| |00004a50| 67 22 20 22 53 65 70 22 | 20 22 4f 63 74 22 20 22 |g" "Sep"| "Oct" "| |00004a60| 4e 6f 76 22 20 22 44 65 | 63 22 29 0d 20 20 20 20 |Nov" "De|c"). | |00004a70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004a80| 20 20 20 20 20 20 20 6d | 6f 6e 74 68 29 29 0d 20 | m|onth)). | |00004a90| 20 20 20 20 20 20 20 20 | 20 20 28 73 74 72 2d 64 | | (str-d| |00004aa0| 61 79 20 28 65 6c 74 20 | 27 28 22 4d 6f 6e 22 20 |ay (elt |'("Mon" | |00004ab0| 22 54 75 65 22 20 22 57 | 65 64 22 20 22 54 68 75 |"Tue" "W|ed" "Thu| |00004ac0| 22 20 22 46 72 69 22 20 | 22 53 61 74 22 20 22 53 |" "Fri" |"Sat" "S| |00004ad0| 75 6e 22 29 0d 20 20 20 | 20 20 20 20 20 20 20 20 |un"). | | |00004ae0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 64 61 | | da| |00004af0| 79 2d 6f 66 2d 77 65 65 | 6b 29 29 0d 20 20 20 20 |y-of-wee|k)). | |00004b00| 20 20 20 20 20 20 20 28 | 73 74 72 2d 79 65 61 72 | (|str-year| |00004b10| 20 28 66 6f 72 6d 61 74 | 20 6e 69 6c 20 22 7e 3a | (format| nil "~:| |00004b20| 28 7e 41 7e 29 22 20 79 | 65 61 72 29 29 0d 20 20 |(~A~)" y|ear)). | |00004b30| 20 20 20 20 20 20 20 20 | 20 28 73 74 72 2d 6d 6f | | (str-mo| |00004b40| 6e 74 68 2d 79 65 61 72 | 20 28 63 6f 6e 63 61 74 |nth-year| (concat| |00004b50| 65 6e 61 74 65 20 27 73 | 74 72 69 6e 67 20 73 74 |enate 's|tring st| |00004b60| 72 2d 6d 6f 6e 74 68 20 | 22 2d 22 20 73 74 72 2d |r-month |"-" str-| |00004b70| 79 65 61 72 29 29 0d 20 | 20 20 20 20 20 20 20 20 |year)). | | |00004b80| 20 20 28 73 74 72 2d 68 | 6f 75 72 2d 6d 69 6e 75 | (str-h|our-minu| |00004b90| 74 65 20 28 66 6f 72 6d | 61 74 20 6e 69 6c 20 22 |te (form|at nil "| |00004ba0| 7e 32 2c 27 30 44 3a 7e | 32 2c 27 30 44 22 20 68 |~2,'0D:~|2,'0D" h| |00004bb0| 6f 75 72 20 6d 69 6e 75 | 74 65 29 29 0d 20 20 20 |our minu|te)). | |00004bc0| 20 20 20 20 20 20 20 20 | 28 73 74 72 2d 64 61 79 | |(str-day| |00004bd0| 2d 79 65 61 72 20 28 63 | 6f 6e 63 61 74 65 6e 61 |-year (c|oncatena| |00004be0| 74 65 20 27 73 74 72 69 | 6e 67 20 73 74 72 2d 64 |te 'stri|ng str-d| |00004bf0| 61 79 20 22 2d 22 20 73 | 74 72 2d 79 65 61 72 29 |ay "-" s|tr-year)| |00004c00| 29 0d 20 20 20 20 20 20 | 20 20 20 20 20 28 73 74 |). | (st| |00004c10| 72 2d 64 61 74 65 2d 6d | 6f 6e 74 68 20 28 66 6f |r-date-m|onth (fo| |00004c20| 72 6d 61 74 20 6e 69 6c | 20 22 7e 32 2c 27 30 44 |rmat nil| "~2,'0D| |00004c30| 2d 7e 41 22 20 64 61 74 | 65 20 73 74 72 2d 6d 6f |-~A" dat|e str-mo| |00004c40| 6e 74 68 29 29 29 0d 20 | 20 20 20 20 20 28 6c 61 |nth))). | (la| |00004c50| 62 65 6c 73 20 28 28 70 | 72 69 6e 74 2d 69 74 20 |bels ((p|rint-it | |00004c60| 28 77 68 65 6e 2d 73 74 | 72 69 6e 67 29 0d 20 20 |(when-st|ring). | |00004c70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 28 | | (| |00004c80| 66 6f 72 6d 61 74 20 74 | 20 22 7e 25 7e 25 7e 53 |format t| "~%~%~S| |00004c90| 20 2d 3e 7e 31 35 54 7e | 53 22 20 77 68 65 6e 2d | ->~15T~|S" when-| |00004ca0| 73 74 72 69 6e 67 0d 20 | 20 20 20 20 20 20 20 20 |string. | | |00004cb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004cc0| 28 66 2d 77 68 65 6e 2d | 73 74 72 2d 6d 61 74 63 |(f-when-|str-matc| |00004cd0| 68 65 73 2d 64 61 74 65 | 20 77 68 65 6e 2d 73 74 |hes-date| when-st| |00004ce0| 72 69 6e 67 20 64 61 74 | 65 20 6d 6f 6e 74 68 20 |ring dat|e month | |00004cf0| 79 65 61 72 29 29 0d 20 | 20 20 20 20 20 20 20 20 |year)). | | |00004d00| 20 20 20 20 20 20 20 20 | 3b 3b 0d 20 20 20 20 20 | |;;. | |00004d10| 20 20 20 20 20 20 20 20 | 20 20 20 20 28 66 6f 72 | | (for| |00004d20| 6d 61 74 20 74 20 22 7e | 25 7e 53 20 2d 3e 7e 31 |mat t "~|%~S ->~1| |00004d30| 35 54 7e 7b 7e 53 20 7e | 7d 22 20 77 68 65 6e 2d |5T~{~S ~|}" when-| |00004d40| 73 74 72 69 6e 67 0d 20 | 20 20 20 20 20 20 20 20 |string. | | |00004d50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00004d60| 28 6d 75 6c 74 69 70 6c | 65 2d 76 61 6c 75 65 2d |(multipl|e-value-| |00004d70| 6c 69 73 74 20 28 64 65 | 63 6f 64 65 2d 77 68 65 |list (de|code-whe| |00004d80| 6e 2d 73 74 72 20 77 68 | 65 6e 2d 73 74 72 69 6e |n-str wh|en-strin| |00004d90| 67 29 29 29 29 29 0d 20 | 20 20 20 20 20 20 20 28 |g))))). | (| |00004da0| 6d 61 70 20 6e 69 6c 20 | 23 27 70 72 69 6e 74 2d |map nil |#'print-| |00004db0| 69 74 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |it. | | |00004dc0| 28 61 70 70 65 6e 64 0d | 20 20 20 20 20 20 20 20 |(append.| | |00004dd0| 20 20 20 20 20 20 2a 6c | 2d 77 68 65 6e 2d 73 74 | *l|-when-st| |00004de0| 72 69 6e 67 2a 0d 20 20 | 20 20 20 20 20 20 20 20 |ring*. | | |00004df0| 20 20 20 20 3b 3b 20 54 | 68 65 73 65 20 73 68 6f | ;; T|hese sho| |00004e00| 75 6c 64 20 61 6c 6c 20 | 72 65 74 75 72 6e 20 74 |uld all |return t| |00004e10| 72 75 65 3a 0d 20 20 20 | 20 20 20 20 20 20 20 20 |rue:. | | |00004e20| 20 20 20 28 6c 69 73 74 | 20 73 74 72 2d 64 61 79 | (list| str-day| |00004e30| 20 73 74 72 2d 6d 6f 6e | 74 68 20 73 74 72 2d 79 | str-mon|th str-y| |00004e40| 65 61 72 20 73 74 72 2d | 6d 6f 6e 74 68 2d 79 65 |ear str-|month-ye| |00004e50| 61 72 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |ar. | | |00004e60| 20 20 20 20 20 20 20 73 | 74 72 2d 64 61 79 2d 79 | s|tr-day-y| |00004e70| 65 61 72 20 73 74 72 2d | 68 6f 75 72 2d 6d 69 6e |ear str-|hour-min| |00004e80| 75 74 65 20 73 74 72 2d | 64 61 74 65 2d 6d 6f 6e |ute str-|date-mon| |00004e90| 74 68 29 29 29 29 29 29 | 29 0d 7c 23 00 00 00 00 |th))))))|).|#....| |00004ea0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00004eb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00004ec0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00004ed0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00004ee0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00004ef0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00004f00| 00 00 01 00 00 00 02 88 | 00 00 01 88 00 00 00 52 |........|.......R| |00004f10| 01 00 19 a2 03 00 19 e9 | 01 00 19 ee 03 00 1a cd |........|........| |00004f20| 01 00 1a e3 03 00 1d f1 | 01 00 1e 08 03 00 1f 52 |........|.......R| |00004f30| 11 77 68 65 6e 2d 73 74 | 72 69 6e 67 73 2e 6c 69 |.when-st|rings.li| |00004f40| 73 70 02 00 00 00 54 45 | 58 54 43 43 4c 32 01 00 |sp....TE|XTCCL2..| |00004f50| 00 00 54 45 58 54 43 43 | 4c 32 01 00 00 50 01 80 |..TEXTCC|L2...P..| |00004f60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00004f70| 00 00 a6 b1 59 93 00 00 | 4e 1c 00 00 02 da 33 6a |....Y...|N.....3j| |00004f80| 01 00 33 7f 03 00 36 0c | 01 00 36 18 03 00 38 bc |..3...6.|..6...8.| |00004f90| 01 00 38 d7 03 00 39 2e | 01 00 39 4a 01 00 35 7b |..8...9.|..9J..5{| |00004fa0| 03 00 3a bc 01 00 3a e1 | 03 00 3b 65 01 00 3b 87 |..:...:.|..;e..;.| |00004fb0| 00 00 01 00 00 00 02 b0 | 00 00 01 b0 00 00 00 52 |........|.......R| |00004fc0| 00 28 b4 6c 08 d2 00 00 | 00 1c 00 52 00 01 46 52 |.(.l....|...R..FR| |00004fd0| 45 44 00 01 00 12 4d 50 | 53 52 00 00 00 2a 00 02 |ED....MP|SR...*..| |00004fe0| ff ff 00 00 00 6e 00 00 | 00 00 00 03 ff ff 00 00 |.....n..|........| |00004ff0| 00 4c 00 00 00 00 03 ed | ff ff 00 00 00 00 00 29 |.L......|.......)| |00005000| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 00 |...H..Mo|naco....| |00005010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00005020| 00 00 00 00 00 00 00 06 | 00 08 00 29 00 03 01 de |........|...)....| |00005030| 02 00 00 29 00 03 01 de | 02 00 00 00 00 00 00 00 |...)....|........| |00005040| 08 b7 00 00 08 b7 00 00 | 04 90 01 00 00 00 00 1e |........|........| |00005050| 00 00 06 4d 6f 6e 61 63 | 6f 06 4d 6f 6e 61 63 6f |...Monac|o.Monaco| |00005060| 06 4d 6f 6e 61 63 6f 06 | 47 65 6e 65 76 61 00 00 |.Monaco.|Geneva..| |00005070| 01 16 00 04 00 04 09 00 | 00 04 09 04 00 04 09 02 |........|........| |00005080| 00 03 09 01 01 00 00 00 | 02 00 01 52 01 00 01 58 |........|...R...X| |00005090| 03 00 01 5c 01 00 01 67 | 03 00 01 82 01 00 01 88 |...\...g|........| |000050a0| 02 00 01 d2 01 00 01 dd | 02 00 04 92 01 00 04 9d |........|........| |000050b0| 04 00 07 ef 01 00 08 07 | 04 00 08 19 01 00 08 32 |........|.......2| |000050c0| 04 00 08 85 01 00 08 94 | 04 00 0a 66 01 00 0a 76 |........|...f...v| |000050d0| 04 00 0a e6 01 00 0a f6 | 04 00 0b 6b 01 00 0b 82 |........|...k....| |000050e0| 04 00 0c 5c 01 00 0c 73 | 04 00 12 5b 01 00 12 73 |...\...s|...[...s| |000050f0| 04 00 13 05 01 00 13 1d | 04 00 16 ce 01 00 16 dd |........|........| |00005100| 04 00 17 f1 01 00 18 00 | 04 00 1c 96 01 00 1c a6 |........|........| |00005110| 04 00 1d f3 01 00 1e 03 | 04 00 2a 2c 01 00 2a 3b |........|..*,..*;| |00005120| 04 00 2e 28 01 00 2e 43 | 04 00 34 d5 01 00 34 ee |...(...C|..4...4.| |00005130| 04 00 3e 9e 01 00 3e b8 | 04 00 3f cf 01 00 3f e9 |..>...>.|..?...?.| |00005140| 04 00 3f ff 01 00 40 0b | 04 00 41 78 01 00 41 92 |..?...@.|..Ax..A.| |00005150| 04 00 41 a8 01 00 41 ae | 04 00 43 1d 01 00 43 37 |..A...A.|..C...C7| |00005160| 04 00 43 4d 01 00 43 52 | 04 00 44 b9 01 00 44 d3 |..CM..CR|..D...D.| |00005170| 04 00 44 e9 01 00 44 f5 | 04 00 47 2c 01 00 47 3b |..D...D.|..G,..G;| |00005180| 04 00 4b d7 01 00 4b df | 00 00 01 00 00 00 02 88 |..K...K.|........| |00005190| 00 00 01 88 00 00 00 52 | 00 7c f3 4c 0d 3a 00 00 |.......R|.|.L.:..| |000051a0| 00 1c 00 52 00 01 46 52 | 45 44 00 01 00 12 4d 50 |...R..FR|ED....MP| |000051b0| 53 52 00 00 00 2a 00 02 | ff ff 00 00 00 6e 00 00 |SR...*..|.....n..| |000051c0| 00 00 00 03 ff ff 00 00 | 00 4c 00 00 00 00 03 ed |........|.L......| |000051d0| ff ff 00 00 00 00 00 7d | 15 98 00 00 00 00 00 00 |.......}|........| |000051e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |000051f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| +--------+-------------------------+-------------------------+--------+--------+